Laravel Nova показывает разные метки в зависимости от уровня пользователя

#laravel #laravel-nova #laravel-5.8

#laravel #laravel-nova #laravel-5.8

Вопрос:

Я знаю о методе laravel label, который можно использовать для изменения имени ресурса в навигации.

Я могу, например, использовать приведенное ниже на моем групповом ресурсе для отображения ‘Group’ вместо ‘Groups’.

 public static function label() {

    return 'Group';

}
  

Кто-нибудь знает, как я мог бы определить метку, которая отображается на основе чего-то вроде уровня пользователя?

я хочу что-то похожее на это;

 public static function label() {

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

        return 'Groups';

    }

    else {

        return 'Group';

    }

}
  

Как мне получить экземпляр пользователя, который я могу использовать внутри функции?

Ответ №1:

Что вы можете сделать, так это использовать auth()->user() для получения текущего уровня аутентификации. Итак, ваша функция может выглядеть примерно так:

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

Вы должны попытаться выяснить, есть ли какой-либо случай, когда это не удается, если пользователь не прошел проверку подлинности. Вы можете исправить это с помощью такой проверки:

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

Имейте в виду, что это также изменит заголовок страницы ресурса.

Комментарии:

1. Спасибо. Я не знаю, почему я не подумал использовать auth()-> user(), как обычно, в Laravel. Работает хорошо. Еще раз спасибо.