无论控制器如何,如何在 Laravel 中将数据传递给布局?
Posted
技术标签:
【中文标题】无论控制器如何,如何在 Laravel 中将数据传递给布局?【英文标题】:How to pass data to layout in Laravel regardless of controller? 【发布时间】:2014-04-03 14:32:25 【问题描述】:假设我得到了ControllerA
和ControllerB
,它们都实现了相同的布局。现在我想将数据传递给布局,例如,无论哪个控制器实现它,都应该出现在布局中的消息。如果我只有 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
如何将 Laravel 资源 API 数据传递给 Vuejs?