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

问题描述 投票:0回答:1

这可能是一件简单的事情,但它却让我着迷。

所以,我的布局刀片模板有这样的:

@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 }}?目前我刚刚收到未定义索引错误。

非常感谢您的帮助。

laravel include laravel-blade partials
1个回答
2
投票
@include('layouts.partials.scripts', ['boo' => 'Hoo'])

Laravel 文档:https://laravel.com/docs/8.x/blade#include-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

© www.soinside.com 2019 - 2024. All rights reserved.