我正在使用 laravel 的刀片模板,并且我的所有页面都有一个主模板。在主模板中,我有一个顶栏和一个侧边栏。我想在侧边栏中加载一些东西。但我不知道如何以更简单的方式做到这一点。现在我在我拥有的每个控制器中调用该方法(我想在我的侧边栏中显示):
View::make()->with('data_to_load_in_sidebar',$data_to_load_in_sidebar)
我怎样才能只加载一次,而不是每次生成视图时?
我会在构造函数中共享顶部栏和侧边栏数据(最好在某些 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)
}
这就是视图作曲家的用途,任何加载的视图都会自动运行它的作曲家,同时为视图提供它可能需要的任何额外数据。
View::composer(array('partials.sidebar'), function($view)
{
$news = News::all();
$view->with('news', $news);
});
我通常把它放在我routes.php
的 L3 和 L4 文件中。
在视图中views\partials\sidebar.blade.php
,您现在始终可以访问$news
包含 News 集合中所有模型的变量。