2015-05-12 34 views
5

我正在使用Laravel 5,我想输出类别变量到一个视图,但目前我得到一个未定义的变量错误。Laravel 5查看作曲家给我一个未定义的变量错误

这是代码。

首先,在配置/ app.php:

'App\Providers\AppServiceProvider', 

在应用程序/提供者/ AppServiceProvider.php:

public function boot() 
    { 
     View::composer('partials.menu', function($view) 
     { 
      $view->with('categories', Category::all()); 
     }); 
    } 

在泛音/ menu.blade.php:

<ul> 
    <li>Home</li> 
    @foreach($categories as $category) 
     <li><a href="/store/category/{!! $category->id !!}">{!! $category->name !!}</a></li> 
    @endforeach 
    <li>Basket</li> 
    <li>Checkout</li> 
    <li>Contact Us</li> 
</ul> 

and in store/products.php:

@include('partials.menu') 

我得到的确切错误是:未定义的变量:分类任何帮助解决这个将不胜感激。

谢谢

+0

您是否找到解决方案 – Nikonah

回答

0

我认为方法“with”接受一个数组作为参数,而不是尝试这个!

$categories = Categories::all(); 
$view->with(compact('categories')); 
+0

不是。 'with'接受字符串和数组。参见[源代码](https://github.com/laravel/framework/blob/5.5/src/Illuminate/View/View.php#L177)。 – ruuter

0

我发现问题出在您的app/Providers/AppServiceProvider.php

在你的引导方法中,view::composer是为了接收你的作曲家应该适用的。即View::composer(['partials.menu'], function($view) { .. }

查看完整的解决方案:

public function boot() 
{ 
    View::composer(['partials.menu'], function($view) 
    { 
     $view->with('categories', Category::all()); 
    }); 
} 
0

,你需要正确地传递类别类的查询,只是改变Categories::all()\App\Categories::all()假设你没有更改命名空间。

0

尝试这些命令

composer dump-autoload 
or 
php artisan cache:clear 
or 
php artisan config:clear 

有时,这些简单的技巧帮助。