Отображение label только админу

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
squock
Сообщения: 3
Зарегистрирован: 2017.07.21, 04:29

Отображение label только админу

Сообщение squock »

Недавно начал изучать yii2, возник вопрос как отображать в главной странице некоторые ссылки url только админу.
Вот кусок кода в main.php

Код: Выделить всё

  echo Nav::widget([
        'options' => ['class' => 'navbar-nav'],
        'items' => [
            ['label' => 'index', 'url' => ['/']],
            ['label' => 'Новости', 'url' => ['/news']],
            ['label' => 'Настройки', 'url' => ['/settings']],
        ]
    ]);
Собственно должно отображать только новости и главную страницу гостю и обычным пользователям, а настройки админу. Думаю, что настройки лучше вынести в отдельный виджет, и проверить является ли юзер админом, и если он админ, то отображать, но не совсем понимаю как это реализовать.
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Отображение label только админу

Сообщение caHek2x »

Код: Выделить всё

$items = [
    ['label' => 'index', 'url' => ['/']],
    ['label' => 'Новости', 'url' => ['/news']],
];

if (проверка на админа) {
    $items[]=['label' => 'Настройки', 'url' => ['/settings']],
}

echo Nav::widget([
    'options' => ['class' => 'navbar-nav'],
    'items' => $items
]);
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Отображение label только админу

Сообщение zabachok »

Не слушайте предыдущего оратора.
Для этих целей давно придумано свойство visible. http://www.yiiframework.com/doc-2.0/yii ... ems-detail
Делайте как делали, только добавьте его в свой массив:

Код: Выделить всё

echo Nav::widget([
        'options' => ['class' => 'navbar-nav'],
        'items' => [
            ['label' => 'index', 'url' => ['/']],
            ['label' => 'Новости', 'url' => ['/news']],
            ['label' => 'Настройки', 'url' => ['/settings'], 'visible' => Yii::$app->user->can('doSomething')],
        ]
    ]);
2b||!2b Just read the instructions
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Отображение label только админу

Сообщение Loveorigami »

Прочитайте про RBAC и тогда сможете сделать так
https://yiiframework.com.ua/ru/doc/guid ... rolej-rbac

Код: Выделить всё

  echo Nav::widget([
        'options' => ['class' => 'navbar-nav'],
        'items' => [
            ['label' => 'index', 'url' => ['/']],
            ['label' => 'Новости', 'url' => ['/news']],
            ['label' => 'Настройки', 'url' => ['/settings'], 
               'visible'=>Yii::$app->user->can('admin') // будет видно админу
            ],
        ]
    ]);
upd. Пока искал ссылку на RBAC- выше дали аналогичный ответ
squock
Сообщения: 3
Зарегистрирован: 2017.07.21, 04:29

Re: Отображение label только админу

Сообщение squock »

zabachok писал(а): 2017.07.21, 10:56 Не слушайте предыдущего оратора.
Для этих целей давно придумано свойство visible. http://www.yiiframework.com/doc-2.0/yii ... ems-detail
Делайте как делали, только добавьте его в свой массив:

Код: Выделить всё

echo Nav::widget([
        'options' => ['class' => 'navbar-nav'],
        'items' => [
            ['label' => 'index', 'url' => ['/']],
            ['label' => 'Новости', 'url' => ['/news']],
            ['label' => 'Настройки', 'url' => ['/settings'], 'visible' => Yii::$app->user->can('doSomething')],
        ]
    ]);
Спасибо за ответ, понял!)
squock
Сообщения: 3
Зарегистрирован: 2017.07.21, 04:29

Re: Отображение label только админу

Сообщение squock »

Loveorigami писал(а): 2017.07.21, 10:57 Прочитайте про RBAC и тогда сможете сделать так
https://yiiframework.com.ua/ru/doc/guid ... rolej-rbac

Код: Выделить всё

  echo Nav::widget([
        'options' => ['class' => 'navbar-nav'],
        'items' => [
            ['label' => 'index', 'url' => ['/']],
            ['label' => 'Новости', 'url' => ['/news']],
            ['label' => 'Настройки', 'url' => ['/settings'], 
               'visible'=>Yii::$app->user->can('admin') // будет видно админу
            ],
        ]
    ]);
upd. Пока искал ссылку на RBAC- выше дали аналогичный ответ
Спасибо, прочитаю данную ссылку)
Ответить