将数据传递到视图而不"with()"视图编辑器



我喜欢将数据传递给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);
}

相关内容

最新更新