2015-12-18 5 views
0

Я пытался работать над моей проблемой, но я застрял здесь не может решить, почему эта переменная не определена в home.blade.php
Это мой HomeController.php, где я есть $ пункты переменных, которая вызывает проблемуLaravel, неопределенная переменная в соображениях

<?php 
use app\Item; 
namespace App\Http\Controllers; 

class HomeController extends BaseController 
{ 
    public function __construct(Item $items) 
    { 
     $this->items = $items; 
    } 

    public function getIndex() 
    { 
     $items = Auth::user()->items; 

     return View::make('home', array(
     'items' => $items  
     )); 
    } 



    public function postIndex() 
    { 
     $id = Input::get('id'); 
     $useId = Auth::user()->id; 

     $item = Item::findOrFail($id); 

     if($item->owner_id == $userId) 
     $item -> mark(); 

     return Redirect::route('home'); 
    } 
} 
?> 

и это класс предметов, где я расширил его с красноречивым

<?php 
class Item extends Eloquent 
{ 
    public function mark() 
    { 
     $this->done = $this->done?false:true; 
     $this->save(); 
    } 
} 

в то время как у меня есть другая функция элементы, которые я пытаюсь использовать в качестве переменной в виду это файл User.php и функция определена в конце

<?php 

namespace App; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Foundation\Auth\Access\Authorizable; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

class User extends Model implements AuthenticatableContract, 
            AuthorizableContract, 
            CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'users'; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = ['name', 'email', 'password']; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = ['password', 'remember_token']; 

    public function items() 
    { 
     return $this->hasMany('Item','owner_id'); 
    } 
} 

И это файл с видом home.blade. PHP где его дает ошибка в цикле Еогеаспа
ошибка: ErrorException в b5a9f5fc2ee329af8de0b5c94fd30f78 строке 7: Неопределенных переменные: элементы (вид: C: \ Users \ Rehman_ \ Desktop \ ToDo-приложения \ Resources \ Views \ home.blade.php)

@extends('master') 

@section('content') 

    <h1>TO DO: Items</h1> 
    <hr> 

    <ul> 
     @foreach ($items as $item) 
     @endforeach 
    </ul> 

@stop 

Update: Route.php файл

<?php 

Route::get('/',array('as'=>'home','uses'=>'[email protected]'))->before('auth'); 

Route::post('/',array('uses','[email protected]'))->before('csrf'); 

Route::get('/login',array('as'=>'login','uses' => 'Auth\[email protected]'))->before('guest'); 

Route::post('login',array('uses' => 'Auth\[email protected]'))->before('csrf'); 
+0

В HomeController можно попробовать 'вид возврата ('дом', компактные ('элементы ')) ' – IE5Master

+0

Я уже пробовал, что @ IE5Master :(Я даже попытался с представлением (' home ') -> с (' item ', $ item), но не помог –

+0

все кажется прекрасным. Вы уверены, что ваш маршрут указывает на правильный контроллер и его метод? – Digitlimit

ответ

0

Попробуйте это:

return View('home', compact('items')); 

Вместо этого:

return View::make('home', array(
    'items' => $items  
)); 
+0

Я уже пробовал этого брата, однако с помощью других ребят я изменил контроллер, изменив его сейчас. ** Класс App \ Http \ Controllers \ Item не делает t существует **, теперь я думаю, что он даже не находит класс. –

+0

Добавили ли 'Item' в верхнюю часть вашего контроллера? Пример: 'use App \ Item;' – smartrahat

+0

после смены имени вам нужно будет «composer dump-autoload», он обновит файл autoload_classmap.php в вендоре/композиторе с новым именем класса. – stackMonk

0

Ваш маршрут, вероятно, указывает на неправильный контроллер/метод, следовательно, переменная не отправленного в представлении.

Try:

Route::get('/', [ 'as'=>'home','uses'=>'[email protected]']); 
+0

Почему мы должны использовать ** 'middleware' => 'auth' ** здесь? его отправка мне на ** localhost: 8000/auth/login ** –

+0

Добавил его на основе вашего кода. Удалили. Если вы должны использовать Auth :: user() -> элементы, то вам нужно включить его – Digitlimit

+0

нормально, но проблема такая же :(«undefined variable item» –

Смежные вопросы