我正在使用laravel的刀片模板,我的所有页面都有一个主模板。在主模板中,我有一个顶栏和一个侧栏。我想在侧边栏中加载一些东西。但我不知道如何以更简单的方式做到这一点。现在我在每个控制器中调用该方法(我希望在侧边栏中显示)我喜欢这样:
View::make()->with('data_to_load_in_sidebar',$data_to_load_in_sidebar)
如何只加载一次,而不是每次生成视图?
答案 0 :(得分:1)
我会分享顶级酒吧&构造函数中的侧边栏数据(最好在某些BaseController的构造函数中,其他控制器扩展)。
public function __construct()
{
// if needed, call parent's contructor method as well
parent::__construct()
$data_to_load_in_sidebar = loadDataForSidebar();
View::share('data_to_load_in_sidebar',$data_to_load_in_sidebar)
}
答案 1 :(得分:1)
这就是作曲家的观点,任何加载的视图都会自动运行它的作曲家并为视图提供可能需要的任何额外数据。
View::composer(array('partials.sidebar'), function($view)
{
$news = News::all();
$view->with('news', $news);
});
我通常将它放在L3和L4中的routes.php
文件中。
在视图views\partials\sidebar.blade.php
中,您现在始终可以访问包含新闻集合中所有模型的变量$news
。