在视图编辑器中将数据传递给视图而不使用“with()”

时间:2015-05-04 20:01:54

标签: php laravel laravel-5

我喜欢将数据传递到Laravel中的视图的方式。但我不使用“with”方法,我更喜欢将所有数据作为视图辅助函数中的第二个参数传递:

$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'] }}

在我看来,我不想要。我想使用短语法。那么有没有办法像我上面描述的那样传递它?作为视图函数的第二个参数?

由于

2 个答案:

答案 0 :(得分:3)

只需使用glUniform3fv循环遍历数组的每个部分:

foreach

答案 1 :(得分:2)

在回答您关于仅将view函数称为传递值的问题时,答案是否定的,您不能这样做。

想想你在第一个例子中做了什么。当你调用view('template', $data)时,你正在调用Laravel核心中定义的辅助函数。这个功能在做什么?它可能通过调用View::make()->with()来实例化一个视图。换句话说,在幕后,它正在做你想要避免的事情。

现在,如何使用视图编辑器?我想它会是这样的:

在您的控制器中,您拨打view('template', $somedata)

您现在拥有一个包含$somedata的视图对象。

在渲染HTML页面的过程中,Laravel会调用您的视图编辑器,并传递您刚刚创建的视图对象。

然后你调用view($newdata)(或类似的东西 - 我不清楚语法是什么),它会将新数据附加到现有的视图对象。但这不是Laravel开发人员所做的事情。这并不是说它无法完成,它只是不是他们考虑的用例。

可以做的是在视图编辑器中逐步执行新数据,并将各个值添加到现有视图中,如下所示:

foreach ($newdata as $key => $value) {
    $view->with($key, $value);
}