【问题标题】:Overwrite view()->share key in controller method?在控制器方法中覆盖视图()->共享键?
【发布时间】:2016-08-11 20:37:26
【问题描述】:

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

【问题讨论】:

  • 什么是pageHeading
  • @IvankaTodorova 哎呀,我已经修好了。应该是page
  • 这是因为你发送了一个只包含title的新变量!!
  • @Maraboc 是的,我知道这一点。这就是我寻求解决方案的原因。

标签: php laravel laravel-5.2


【解决方案1】:

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

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

与:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多