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

时间:2016-08-11 12:19:09

标签: php laravel laravel-5.2

假设我们在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']将不再可用,它将不会存在于视图中。我怎样才能克服这种情况?

1 个答案:

答案 0 :(得分:2)

最简单的解决方案可能是在您的控制器中替换:

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

使用:

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

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