在控制器方法中覆盖view()->share的键?

12 浏览
0 Comments

在控制器方法中覆盖view()->share的键?

假设我们在AppServiceProvider中有以下内容:

$page = [ 
   'title' => '页面名称',
   'info'  => '内容在这里'
];
view()->share('page', $page);

在视图中:

{{$page['title']}}

{{$page['info']}}

如果我想在方法控制器中覆盖$page['title'],我尝试了以下方法:

public function index()
 {
    $page['title'] = "仅覆盖标题";
    return view('index', compact('page'));
 }

问题是$page['info']将不再可用,它将在视图中不存在。我该如何解决这个问题?

0
0 Comments

在Controller中覆盖view()->share键的最简单解决方案可能是将以下代码:

$page['title'] = "overwrite title only";

替换为:

$page = array_merge(
    view()->shared('page'), 
    ['title' => "overwrite title only"]
);

view()->shared()方法返回共享变量,然后我们可以覆盖一些数组元素并将覆盖后的数组传递给视图。

0