Laravel 5 View composer给出了一个未定义的变量错误

时间:2015-05-12 01:53:11

标签: views composer-php laravel-5

我正在使用Laravel 5,我正在尝试将类别变量输出到视图,但目前我收到一个未定义的变量错误。

这是代码。

首先在config / app.php中:

'App\Providers\AppServiceProvider',

在app / Providers / AppServiceProvider.php中:

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

在partials / 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>

并在store / products.php中:

@include('partials.menu')

我得到的确切错误是:未定义的变量:类别任何帮助解决这个问题都将受到赞赏。

由于

4 个答案:

答案 0 :(得分:2)

尝试这些命令

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

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

答案 1 :(得分:1)

我发现问题来自您的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());
    });
}

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您需要正确传递查询中的Categories类,只需将Categories::all()更改为\App\Categories::all(),假设您没有更改名称空间。