Laravel Nova 根据用户级别显示不同的标签

Laravel Nova show different label based on user level

我知道 laravel 标签方法可用于更改导航中资源的名称。

例如,我可以在我的组资源上使用以下内容来显示 'Group' 而不是 'Groups'。

public static function label() {

    return 'Group';

}

有谁知道如何定义基于用户级别等显示的标签?

我想要的是这样的东西;

public static function label() {

    if($user->level == 'Admin') {

        return 'Groups';

    }

    else {

        return 'Group';

    }

}

如何获取可以在函数内部使用的用户实例?

您可以做的是使用auth()->user() 来获取当前的认证级别。所以你的函数可能看起来像这样:

public static function label()
{
    $user = auth()->user();
    if($user->level == 'Admin') {
        return 'Groups';
    } else {
        return 'Group';
    }
}

您应该尝试查看是否存在用户未通过身份验证失败的情况。您可以通过这样的检查来解决这个问题:

    if(auth()->guest()) {
        return 'Group';
    }

请记住,这也会更改资源页面的标题。