【问题标题】:Laravel - How to pass data to includeLaravel - 如何传递数据以包含
【发布时间】:2016-09-01 17:33:02
【问题描述】:

所以基本上我所有的视图都在使用 header.blade.php,因为我将它包含在我的主布局中。我需要将数据传递给每个视图的标题。有没有办法只将数据传递给包含而不是为每个视图中的标题传递数据?

【问题讨论】:

    标签: php laravel laravel-blade


    【解决方案1】:

    你不需要这样做,but you can

    所有可用于父视图的变量都将生成 可用于包含的视图。即使包含的视图将 继承父视图中所有可用的数据,你也可以传递一个 包含视图的额外数据数组:

    @include('view.name', ['some' => 'data'])
    

    【讨论】:

    • 这是正确答案!但问题与主题相关性不够!
    • 它是否在本地范围内限定为“@include”及其后代?
    • @Alexey 我试过这样做,我可以打印正在传递的 {{$data}} 的值,但是当试图将它传递给一个无法识别的路由时。
    【解决方案2】:

    如果您尝试将数据发送到包含的视图,一个选项是使用view composer。即使在尝试为 @include 准备视图的情况下,它们也会触发

    view()->composer('header', function($view) {
        $view->with('data', 'some data');
    });
    

    【讨论】:

    • 我通过点击链接并查看“与所有视图共享数据”找到了解决方案。谢谢!
    【解决方案3】:

    实际上,向所有视图共享数据的最佳和更快的方法可能就是使用

          AppServiceProvider
    

    您可以使用 share 方法代替 composer 方法,而不是 Jeff 的回答,从而更快地实现您的目标。

    只需在 AppServiceProvider 的启动方法中传递您想要的数据,如下所示

          public function boot()
    {
        View::share('key', 'value');
    }
    

    更多请查看this

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 1970-01-01
      • 2015-08-21
      • 2021-12-29
      • 2018-05-17
      • 1970-01-01
      • 2017-01-11
      相关资源
      最近更新 更多