要构建一个包含大量动态数据的边栏,我学习了Laravel中的视图作曲家。问题在于View Composer在视图加载时触发,并将控制器中的任何数据覆盖为具有相同名称的变量。根据Laravel 5.4的文档,我通过视图创作者实现了我想要的功能:如何在Laravel中使控制器数据覆盖视图控制器?
查看创建者与查看作曲者非常相似;然而,在视图实例化之后立即执行 ,而不是等待 ,直到视图即将呈现。要注册视图创建,使用 创作者方法:
据我所知,这意味着如果我加载与控制器和创作者的同名变量,控制器应覆盖它。然而,这并没有发生在我的代码中。视图作曲家:
public function boot()
{
view()->creator('*', function ($view) {
$userCompanies = auth()->user()->company()->get();
$currentCompany = auth()->user()->getCurrentCompany();
$view->with(compact('userCompanies', 'currentCompany'));
});
}
这里是控制器中的一个,例如:
public function name()
{
$currentCompany = (object) ['name' => 'creating', 'id' => '0', 'account_balance' => 'N/A'];
return view('companies.name', compact('currentCompany'));
}
所讨论的$ currentCompany可变的,例如,总是保留来自创建者的值,而不是被覆盖来自控制器的人。任何想法这里有什么错误?