我喜欢将数据传递给Laravel中的视图的方式。但是我不使用" with" methode,我更喜欢将所有数据作为视图助手函数中的第二个参数:
$data = [
'name' => Auth::User() -> name
]
return view('dashboard', $data);
现在很容易在视图中使用我的数据:
Hello {{ $name }}
无需做
Hello {{ $data['name'] }}
,但这是我的问题:
我想在视图作曲家中做同样的事情。但是,我看到的唯一使用视图作曲家将数据传递给视图的方法是:
public function compose(View $view)
{
$data = [
'name' => Auth::User() -> name
]
$view -> with('data', $data);
}
,但这需要我做
Hello {{ $data['name'] }}
在我看来,我不想要。我想使用简短的语法。那么,是否有一种方法可以像我上面描述的那样传递它?作为视图函数的第二个参数?
谢谢
只需用foreach
循环逐步浏览数组的每个部分:
foreach($data as $key => $value) { $view->with($key, $value); }
回答您有关仅调用view
函数为传递值的问题,答案是否,您不能那样做。
考虑您在第一个示例中正在做什么。当您调用view('template', $data)
时,您正在调用Laravel Core中定义的辅助功能。该功能在做什么?它可能是通过调用View::make()->with()
来实例化的视图。换句话说,在幕后它正在做您想避免的事情。
现在,它如何与视图作曲家一起使用?我想这会像这样:
在您的控制器中,您致电view('template', $somedata)
。
您现在有一个包含$somedata
的视图对象。
在渲染HTML页面的途中,Laravel称您的视图作曲家,沿着您创建的视图对象传递。
然后您调用view($newdata)
(或类似的内容 - 我不清楚语法是什么),并且它将新数据附加到现有视图对象。但这不是Laravel开发人员所做的事情。这并不是说这是不可能完成的,只是他们考虑的不是用例。
您的 can 是在视图作曲家中浏览新数据,并将单个值添加到现有视图中,例如:
foreach ($newdata as $key => $value) {
$view->with($key, $value);
}