【发布时间】:2017-05-07 17:55:15
【问题描述】:
为了构建一个包含大量动态数据的侧边栏,我了解了 Laravel 中的 View composers。问题是 View Composers 在视图加载时触发,覆盖来自控制器的任何数据以获取具有相同名称的变量。不过,根据 Laravel 5.4 文档,我通过视图创建者实现了我想要的:
视图创建者与视图作曲家非常相似;然而,他们是 视图实例化后立即执行,而不是等待 直到视图即将渲染。要注册视图创建者,请使用 创建者方法:
据我了解,这意味着如果我在控制器和创建者中加载具有相同名称的变量,控制器应该覆盖它。但是,我的代码并没有发生这种情况。视图作曲家:
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 变量始终保留来自创建者的值,而不是被来自控制器的值覆盖。知道这里有什么问题吗?
【问题讨论】:
标签: php laravel laravel-5.4