我正在尝试在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
找到要提供的正确文件。
答案 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
。