Laravel 5.5视图作曲家永远不会被调用

时间:2018-02-01 03:45:10

标签: php laravel laravel-5.5

我正在尝试在Laravel 5.5中实现一个作曲家提供程序,如下所述:https://laravel.com/docs/5.5/views

我创建了一个ComposerServiceProvider并将其添加到Config\App providers数组中。我创建了DashboardComposer,它在ComposerServiceProvider的引导方法中添加,我已经返回了$view对象的数据数组(巧妙地称为$data })。

我在加载仪表板视图时遇到错误,$data变量未定义。设置断点并跟踪视图渲染的执行时,ComposerServiceProvider永远不会被调用,DashboardComposer也不会被调用。

创建一个我可能缺少的作曲家是否有任何常见的问题清单?

这里要求的是DashboardComposer

中的代码
namespace App\Http\ViewComposers;

use Illuminate\View\View;

class DashboardComposer
{
    public function __construct()
    {
    }

    public function compose(View $view)
    {
        $data = [
            'key' => 'value',
        ];

        $view->with('data', $data);
    }
}

这是ComposerServiceProvider启动方法:

public function boot()
{
    View::composer(
        'dashboard.index', DashboardComposer::class
    );
}

为了更清楚,我正在尝试使用此作曲家的数据提供的文件位于/resources/views/dashboard/index.blade.php。我对视图命名约定并不完全清楚,但我相信这会使ViewComposer找到要提供的正确文件。

1 个答案:

答案 0 :(得分:0)

您是否已将作曲家文件与ComposerServiceProvider

中的信息中心视图相关联
View::composer(
    'dashboard', DashboardComposer::class
);

尝试注册一个闭包,而不是在boot方法中使用该类,看看你是否至少走得那么远:

View::composer('dashboard', function ($view) {
        $view->with('data', $data);
 });

最后,尝试将数据作为数组返回:

$view->with(['data' => $data]);

编辑:

我相信这是由于你的文件名。 'dashboard.index'正在仪表板目录中查找index.blade.php。将您的文件重命名为dashboard.blade.php