0

我正在使用 laravel 的刀片模板,并且我的所有页面都有一个主模板。在主模板中,我有一个顶栏和一个侧边栏。我想在侧边栏中加载一些东西。但我不知道如何以更简单的方式做到这一点。现在我在我拥有的每个控制器中调用该方法(我想在我的侧边栏中显示):

View::make()->with('data_to_load_in_sidebar',$data_to_load_in_sidebar)

我怎样才能只加载一次,而不是每次生成视图时?

4

2 回答 2

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)
}
于 2013-07-16T12:00:43.147 回答
1

这就是视图作曲家的用途,任何加载的视图都会自动运行它的作曲家,同时为视图提供它可能需要的任何额外数据。

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 集合中所有模型的变量。

于 2013-07-16T14:45:46.303 回答