在 Laravel 8 中将视图变量传递给包含的布局模板

Passing View Variable to Included Layout Template in Laravel 8

这可能是一件简单的事情,但它让我费尽心思。

所以,我的布局 blade 模板是这样的:

@include('layouts.partials.sidebar')
  
  {{ $slot }}
  
  @include('layouts.partials.footer')
  @include('layouts.partials.scripts')

我创建了一个加载模板的视图。我假设这个在 $slot.

中被解析
return view('request', [
  'boo' => 'Hoo'
]);

没问题,页面加载并且变量 'boo' 可以作为 'requests' 模板中的 {{ $boo }} 访问。

但我的问题是,如何将 'boo' 变量传递给布局文件中的包含文件?在这种情况下:

@include('layouts.partials.scripts')

那么,在 'layouts.partials.scripts' 我怎样才能访问 {{ $boo }}?目前我只是收到一个未定义的索引错误。

非常感谢您的帮助。

@include('layouts.partials.scripts', ['boo' => 'Hoo'])

Laravel 文档:https://laravel.com/docs/8.x/blade#including-subviews

如果您有一个像导航、页眉或侧边栏这样的部分,它是主布局的一部分,您可以从中组成其他视图,并且它需要一些不会从一个视图更改为另一个视图的数据,例如导航链接。

然后,您可以在服务提供者中定义视图编辑器 - boot() 方法,而不是从每个控制器方法传递数据

//Service Provider's boot method
public function boot()
{
    View::composer('layouts.partials.sidebar', function ($view) {
    
        //$links = get the data for links

        return $view->with('links', $links);
    });
}

Laravel 操作:https://laravel.com/docs/master/views#view-composers