繁体   English   中英

在Laravel 5.1中显示菜单的最佳方法是什么?

[英]What is the best way to display menu in 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

看起来像: 有关左侧菜单栏的屏幕截图

我知道这种解决方案并不是很好。 我正在寻找一种显示菜单的更简便方法。

我总是必须检查访问者看到的页面,并且必须激活同一菜单。

现在,我正在使用Sentry ,但是将来我想使用中间件

我应该将菜单参数存储在db吗?

谢谢你的帮助!

彼得

我使用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 ,它似乎是Packalyst上Laravel 5.1菜单创建软件包中最受欢迎的菜单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM