【发布时间】:2016-09-01 17:33:02
【问题描述】:
所以基本上我所有的视图都在使用 header.blade.php,因为我将它包含在我的主布局中。我需要将数据传递给每个视图的标题。有没有办法只将数据传递给包含而不是为每个视图中的标题传递数据?
【问题讨论】:
标签: php laravel laravel-blade
所以基本上我所有的视图都在使用 header.blade.php,因为我将它包含在我的主布局中。我需要将数据传递给每个视图的标题。有没有办法只将数据传递给包含而不是为每个视图中的标题传递数据?
【问题讨论】:
标签: php laravel laravel-blade
你不需要这样做,but you can:
所有可用于父视图的变量都将生成 可用于包含的视图。即使包含的视图将 继承父视图中所有可用的数据,你也可以传递一个 包含视图的额外数据数组:
@include('view.name', ['some' => 'data'])
【讨论】:
如果您尝试仅将数据发送到包含的视图,一个选项是使用view composer。即使在尝试为 @include 准备视图的情况下,它们也会触发
view()->composer('header', function($view) {
$view->with('data', 'some data');
});
【讨论】:
实际上,向所有视图共享数据的最佳和更快的方法可能就是使用
AppServiceProvider
您可以使用 share 方法代替 composer 方法,而不是 Jeff 的回答,从而更快地实现您的目标。
只需在 AppServiceProvider 的启动方法中传递您想要的数据,如下所示
public function boot()
{
View::share('key', 'value');
}
更多请查看this
【讨论】: