7

使用 PHP 和 Laravel 4 我在我的用户模型中有一个方法,如下所示来检查管理员用户......

public function isAdmin()
{
    if(isset($this->user_role)  && $this->user_role === 'admin'){
        return true;
    }else{
        return false;
    }
}

但是,当我在其他类或模型中调用此函数时,这不起作用。

为了得到想要的结果,我不得不这样做......

public function isAdmin()
{
    if(isset(Auth::user()->user_role)  && Auth::user()->user_role === 'admin'){
        return true;
    }else{
        return false;
    }
}

我正在尝试像下面这样在我的管理控制器中访问它,但它返回一个空的用户对象而不是当前登录的用户对象...

public function __construct(User $user)
{
    $this->user = $user;
}

所以我的问题是我怎样才能让第一个版本工作?当我在另一个类中实例化一个用户对象时,我需要以某种方式确保它具有当前登录用户的数据,但我不确定最好的方法......我知道这是基本的我只是一点点生锈的现在可以使用帮助,谢谢

4

1 回答 1

14

这将返回用户存储库 - 而不是当前登录的用户

public function __construct(User $user)

要在您的应用程序中的任何位置访问当前登录的用户 - 只需执行

Auth::user()

(就像你的中间例子)

因此 - 检查用户是否是应用程序中的管理员用户 - 只需执行

if (Auth::user()->isAdmin())
{
     // yes
}
else
{
     // no
}
于 2013-09-01T15:18:26.347 回答