2015-10-20 99 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

相关问题