如何根据 laravel/blade 的角色在导航栏中仅显示链接

How to show only links in nav-bar depending on role with laravel/blade

我有一个导航栏,但我不想向所有用户显示每个 link,有些 link 仅供管理员使用。

在我的 navbar.blade 中,我得到了这个 if 语句:

@if(Auth::user()->priveleges->admin)
               <li><a href="{{ url('/priveleges/create') }}">Priveleges</a></li>
            @endif

privileges 是一个 table 与我的用户 table 相关并且有一行 admin(boolean)

使用该代码我收到一个错误:尝试获取 属性 的非对象

我的用户模型中也有一个函数,我现在用它作为中间件来检查用户是否是管理员。这部分虽然有效

public function isAAdmin()
{
    if(Auth::user()->priveleges){
        if(Auth::user()->priveleges->admin === 1){
            return true;
        }
    }

    return false;
}

我也尝试在导航栏中调用该函数,但没有用。

希望有人能帮忙

不好说,但出现以下错误:

Trying to get property of non-object

通常在返回值是一个数组但您没有正确检索数据时发生。

如果您仍然无法理解这一点,您仍然可以使用 has() 方法。或者更好的 whereHas() 方法。这些方法将来可能会有所帮助,因为它们会让您在尝试查询关系时更轻松。

Official doc

最好使用Laravel授权。
为此,请遵循官方文档 http://laravel.com/docs/5.1/authorization
或关注此 laracast 视频 https://laracasts.com/series/whats-new-in-laravel-5-1/episodes/13