无论控制器如何,如何在 Laravel 中将数据传递给布局?

Posted

技术标签:

【中文标题】无论控制器如何,如何在 Laravel 中将数据传递给布局?【英文标题】:How to pass data to layout in Laravel regardless of controller? 【发布时间】:2014-04-03 14:32:25 【问题描述】:

假设我得到了ControllerAControllerB,它们都实现了相同的布局。现在我想将数据传递给布局,例如,无论哪个控制器实现它,都应该出现在布局中的消息。如果我只有 1 个控制器,我会这样做:

class Controller extends \BaseController 
    public function setupLayout() 
        View::share('message', 'Hello world!');
    

    // further methods

但是,当我想要多个控制器来实现一个布局时,我必须在每个控制器中都这样做,这听起来不合理。所以我想问一下,Laravel 中是否有任何本地方式可以将数据传递给布局,而不是在每个控制器中复制代码。

提前致谢!

【问题讨论】:

在构造函数中使用 View::share 创建 YourBaseController,然后使用应该在视图中使用此数据的控制器对其进行扩展 【参考方案1】:

对于这些情况,我建议使用视图编辑器,您可以在其中为多个视图(或布局)或全部设置它们:

View::composer(['store.index', 'products.*'], function($view)

    $view->with('model', 'one');
    $view->with('colour', 'black');
);

你可以把它放在你的路由文件、过滤器文件中,或者像我一样,创建一个app/composers.php 并通过添加加载

require app_path().'/composers.php';

致您的app/start/global.php

【讨论】:

这就是我要找的。谢谢!

以上是关于无论控制器如何,如何在 Laravel 中将数据传递给布局?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController

如何在反应原生导航 v5 中将数据传递回上一个屏幕?

如何使用 ajax 将数据传递给控制器​​并相应地查看数据

如何将 Laravel 资源 API 数据传递给 Vuejs?

在 Laravel 5.2 中将页面 URL 参数传递给控制器

如何将JSON数据传递给laravel中的视图