如何在laravel中仅与某些控制器命名空间共享站点标题和一些设置变量


How to share site title and some settings variable only with certain controller namespace in laravel?

我有一个管理部分位于app.dev/admin

我想分享网站标题和一些设置,如缓存版本的所有视图下的这个命名空间。我该怎么做呢?我读了这个http://laravel.com/docs/5.1/views#sharing-data-with-all-views,但我只想在管理名称空间下共享数据。我该怎么做呢?

您可以在该命名空间上创建一个抽象控制器,并使来自同一命名空间的所有其他控制器扩展该抽象控制器。

在抽象控制器的构造函数中,您可以使用以下代码来共享变量

view()->share([
    'version'  => $foo,
    'settings' => $bar,
]);

如果你不喜欢使用构造函数,你也可以在抽象控制器上使用任何其他方法,并确保在加载视图之前在子控制器上调用该方法。

另一种方法是用该方法创建一个trait,并确保该命名空间上的所有控制器都使用该trait。