我正在尝试在Laravel应用程序中共享一个对象。我需要这个,因为我想创建一个刀片模板,它将包含在任何地方,并且还会执行一些逻辑/数据操作(动态菜单说话)。
为了能够实现这一点,我在Base控制器中创建了一个构造函数,并使用了View :: share facade。 虽然这适用于应用程序中的所有路径,但它不适用于Zizaco / Confide生成的路由,我在这里获得$ books的Undefined变量错误。
这是基本控制器中的构造函数:
public function __construct()
{
$books = Book::all();
View::share('books', $books);
return View::make('adminMenu')->with('books', $books);
}
答案 0 :(得分:1)
您需要的是View Composers!!
您可以将视图编辑器挂钩到某个视图名称或模式(使用*
通配符)。每次在渲染视图之前,视图编辑器都会运行。
你可以把它放在任何地方。最优雅的是自定义app/composers.php
,然后在app/start/global.php
的底部需要
View::composer('adminMenu', function($view){
$books = Book::all();
$view->with('books', $books);
}