我正在使用Laravel,并且我有大量的index.blade.php
页面扩展了master.blade.php
页面,现在master
需要一些数据,例如菜单项列表。< / p>
当我想查看Aircraft
我的这条路线列表时:
Route::get('aircrafts', 'AircraftsController@index');
这是方法AircraftsController@index
:
public function index(){
$aircrafts = Aircraft::all();
$menus = Menu::all();
return view('aircrafts.index', compact('menus', 'aircrafts'));
}
如何看待我必须将$menus
传递给每个控制器中的每个视图,如果在某个时刻master
需要一些其他数据,我将被迫编辑每个控制器......
是否有更智能的方法将数据传递给母版?
我想避免直接在视图中检索感兴趣的数据......
答案 0 :(得分:1)
添加use View;
public function boot()
{
View::composer('*', function($view){
$view->with('aircrafts', Aircraft::all());
$view->with('menus', Menu::all());
});
}
之后用法相同。与@foreach($menus as $foo)
答案 1 :(得分:0)
如果所有视图中都需要数据,那么您可以在服务提供商中尝试view()->share('menus', Menu::all())
,否则View::composer()
是正确的选择。