我在构建来自数据库的动态导航菜单系统时遇到了问题,因为laravel 5.2实现了 Route :: auth(); 进行基本认证。问题是我已经为所有papes包含了navigation.blade.php,现在如何访问我的homecontroller,我使用db facaed将数据转换为authcontroller。
到目前为止,我已尝试过代码 -
class HomeController extends Controller{
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$unauth_menu = DB::table('menu_masters')
->where('menu_auth_check','=','0')
->orwhere('menu_auth_check','=','2')
->Where('menu_group','like','dropin-menu')
->orderBy('menu_order','ASC')
->get(['menu_link','menu_target','menu_order','menu_text','menu_icon']);
$auth_menu = DB::table('menu_masters')
->where('menu_auth_check','=','1')
->orwhere('menu_auth_check','=','2')
->orWhere('menu_group','=','auth-nav')
->orderBy('menu_order','ASC')
->get(['menu_link','menu_target','menu_order','menu_text','menu_icon']);
if (Auth::check()){
return view('/home',compact('auth_menu'));
}
else{
return view('welcome',compact('unauth_menu'));
}
}
}
但是这个查询结果我传递到头版不是为了authcontroller,任何想法如何实现所有页面?因此,当登录页面抛出错误时,首页不会出现任何错误。
答案 0 :(得分:1)
您可以使用视图编辑器执行此操作。在 app / Providers 中打开 AppServiceProvider ,然后在 boot()方法中添加:
view()->composer(['home', 'welcome'], function ($view) {
if (Auth::check()){
$menu = DB::table('menu_masters')... //Continue auth menu query
} else {
$menu = DB::table('menu_masters')... //Continue unauth menu query
}
$view->with('menu', $menu);
});
当您尝试使用名称' home' 或' welcome' 添加变量时,这基本上是做什么的$menu
给他们。您可以在documentation中阅读更多内容。