假设我们在AppServiceProvider
$page = [
'title' => 'Page Name',
'info' => 'Content Here'
];
view()->share('page', $page);
在视图中:
<h1>{{$page['title']}}</h1>
<p>{{$page['info']}}</p>
如果我想在方法控制器中覆盖$page['title']
,我尝试过这样:
public function index()
{
$page['title'] = "overwrite title only";
return view('index', compact('page'));
}
问题是$page['info']
将不再可用,它将不会存在于视图中。我怎样才能克服这种情况?
答案 0 :(得分:2)
最简单的解决方案可能是在您的控制器中替换:
$page['title'] = "overwrite title only";
使用:
$page = array_merge(
view()->shared('page'),
['title' => "overwrite title only"]
);
view()->shared()
方法返回共享变量,然后我们可以覆盖一些数组元素并将重写的数组传递给视图。