2015-10-20 139 views
1

我想問一下,哪個菜單是最好的顯示訪問參數的菜單。在Laravel 5.1中顯示菜單的最佳方式是什麼?

所以,現在我用我的default.blade.php下面的代碼:

@if (Sentry::getUser()->hasAccess('something')) 
    <li class="{{ (Request::is('panda/something') ? 'open' : '') }}"> 
     <a href="{{ URL::to('panda/flot_charts') }}" class="menu-dropdown"> 
      <span class="menu-text">Menu 1</span><i class="menu-expand"></i> 
     </a> 
     <ul class="submenu"> 
     @if (Sentry::getUser()->hasAccess('school')) 
      <li class="{{ (Request::is('panda/school') ? "active" : '') }}"> 
       <a href="{{ route('school') }}"><i class="menu-icon fa fa-cogs"></i><span class="menu-text">Submenu</span></a> 
      </li> 
     @endif 
     </ul> 
    </li> 
@endif 

它看起來像: screenshot about left menu bar

我知道,這個解決方案是不是真的好。我正在尋找一種更簡單,更簡單的方式來顯示菜單。

我總是要檢查訪問者看到的頁面,並且必須激活相同的菜單。

現在我使用的是Sentry,但我想在將來使用middleware

我應該將菜單參數存儲在db

感謝您的幫助!

彼得

+0

你爲什麼這樣做是錯的?而且,這裏的中間件類沒有太大的區別,因爲它們意味着要過濾http請求。 – manix

+0

此代碼有效,但我希望有一個更簡單的解決方案。 – kotapeter

回答

1

我用Sentinel這是Sentry的更新版本,也是開源的。這是我用我的身份驗證的中間件:

namespace App\Http\Middleware; 

use Closure; 

class Auth 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure     $next 
    * 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if ($user = Sentinel::check()) { 
      if ($user->hasAccess(Route::currentRouteAction())) { 
       view()->share('user', $user); 
      } else { 
       return view('errors.forbidden'); 
      } 
     } else { 
      return redirect()->guest('/login'); 
     } 

     return $next($request); 
    } 
} 

然後你的菜單代碼可以改爲:

@if ($user->hasAccess('something')) 
    <li class="{{ (Request::is('panda/something') ? 'open' : '') }}"> 
     <a href="{{ URL::to('panda/flot_charts') }}" class="menu-dropdown"> 
      <span class="menu-text">Menu 1</span><i class="menu-expand"></i> 
     </a> 
     <ul class="submenu"> 
     @if ($user->hasAccess('school')) 
      <li class="{{ (Request::is('panda/school') ? "active" : '') }}"> 
       <a href="{{ route('school') }}"><i class="menu-icon fa fa-cogs"></i><span class="menu-text">Submenu</span></a> 
      </li> 
     @endif 
     </ul> 
    </li> 
@endif 

這只是一個細微的變化,雖然。您可能想要查看Caffeinated Menus,這似乎是the package for Laravel 5.1 menu creation on Packalyst中最受歡迎的。

+0

謝謝你的幫助。我會嘗試哨兵和含咖啡因的菜單:) – kotapeter

相關問題