带有laravel内置身份验证的动态菜单

时间:2016-06-18 06:57:59

标签: laravel

enter image description here我在构建来自数据库的动态导航菜单系统时遇到了问题,因为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,任何想法如何实现所有页面?因此,当登录页面抛出错误时,首页不会出现任何错误。

1 个答案:

答案 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中阅读更多内容。