Php 将数据传递到视图时不使用“引用”;带();看作曲家

Php 将数据传递到视图时不使用“引用”;带();看作曲家,php,laravel,laravel-5,Php,Laravel,Laravel 5,我喜欢在Laravel中将数据传递给视图的方式。但我不使用“with”方法,我更喜欢将所有数据作为view helper函数中的第二个参数传递: $data = [ 'name' => Auth::User() -> name ] return view('dashboard', $data); 现在,在视图中使用我的数据非常容易: Hello {{ $name }} 没必要这么做 Hello {{ $data['name'] }} 但我的问题是: 我想在视图生成器

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

$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'] }}
在我看来,这是我不想要的。我想使用简短的语法。那么有没有一种方法可以像我上面描述的那样通过它呢?作为view函数的第二个参数


谢谢

只需使用
foreach
循环逐步完成阵列的每个部分:

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

只需使用
foreach
循环逐步遍历阵列的每个部分:

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

在回答您关于只调用
视图
函数传递值的问题时,答案是否定的,您不能这样做

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

现在,如何使用视图生成器?我想会是这样的:

foreach ($newdata as $key => $value) {
    $view->with($key, $value);
}
在控制器中,调用
view('template',$somedata)

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

在呈现HTML页面的过程中,Laravel调用视图生成器,传递刚才创建的视图对象

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

您可以在view composer中逐步浏览新数据,并将各个值添加到现有视图中,如下所示:

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

在回答您关于只调用
视图
函数传递值的问题时,答案是否定的,您不能这样做

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

现在,如何使用视图生成器?我想会是这样的:

foreach ($newdata as $key => $value) {
    $view->with($key, $value);
}
在控制器中,调用
view('template',$somedata)

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

在呈现HTML页面的过程中,Laravel调用视图生成器,传递刚才创建的视图对象

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

您可以在view composer中逐步浏览新数据,并将各个值添加到现有视图中,如下所示:

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