【问题标题】:How to show only links in nav-bar depending on role with laravel/blade如何根据 laravel/blade 的角色仅在导航栏中显示链接
【发布时间】:2023-03-13 17:35:01
【问题描述】:

我有一个导航栏,我不想将每个链接都显示给所有用户,有些链接仅供管理员使用。

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

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

privileges 是一个与我的用户表相关的表,其中有一行是 admin(boolean)

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

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

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

    return false;
}

我也尝试在导航栏中调用该函数,但不起作用。

希望有人能帮忙

【问题讨论】:

  • 很难确定到底是什么问题,但我会研究调试 Auth::user() 实际返回的内容,然后是 Auth::user()-&gt;priviledges 等等。我怀疑其中一个值不是您所期望的。

标签: php laravel navbar blade


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    很难说但是下面的错误:

    Trying to get property of non-object
    

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

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

    Official doc

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 2021-03-19
      • 2021-10-02
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多