Задать вопрос
@dev400

Странный код в Nav yii2, как можно сделать альтернативно?

Обнаружил такую штуку
Yii::$app->user->isGuest ? "" : (
                            ['label' => 'Главная', 'url' => ['/site/index']] 
                        ),
                        Yii::$app->user->isGuest ? "" : (
                            ['label' => 'Сотрудники', 'url' => ['/site/about']]),
                        
                        Yii::$app->user->isGuest ? "" : (
                            ['label' => 'Лиды', 'url' => ['/site/contact']]),
                        
                        Yii::$app->user->isGuest ? "" : (
                            ['label' => 'Заказы', 'url' => ['/site/contact']]),
                        
                        Yii::$app->user->isGuest ? "" : (
                            ['label' => 'Настройки', 'url' => ['/site/contact']]),

И сгруппировать их не получается в одно условие... Как можно переделать этот ужас?
  • Вопрос задан
  • 432 просмотра
Подписаться 1 Оценить 6 комментариев
Решения вопроса 2
@bears
Там скорее всего что-то типа такого:
$nav = [
    'items' => Yii::$app->user->isGuest ? '' : (
                    ['label' => 'Главная', 'url' => ['/site/index']] 
                ),
                Yii::$app->user->isGuest ? "" : (
                    ['label' => 'Сотрудники', 'url' => ['/site/about']]),
                
                Yii::$app->user->isGuest ? "" : (
                    ['label' => 'Лиды', 'url' => ['/site/contact']]),
                
                Yii::$app->user->isGuest ? "" : (
                    ['label' => 'Заказы', 'url' => ['/site/contact']]),
                
                Yii::$app->user->isGuest ? "" : (
                    ['label' => 'Настройки', 'url' => ['/site/contact']]),
];


Это то же самое что и:
if (Yii::$app->user->isGuest) {
    $nav = [
        'items' => [],
    ];
} else {
    $nav = [
        'items' => [
            ['label' => 'Главная', 'url' => ['/site/index']] ,
            ['label' => 'Сотрудники', 'url' => ['/site/about']],
            ['label' => 'Лиды', 'url' => ['/site/contact']],
            ['label' => 'Заказы', 'url' => ['/site/contact']],
            ['label' => 'Настройки', 'url' => ['/site/contact']],
        ],
    ];
}

Какой-то извращенец писал код
Ответ написан
za4me
@za4me
Человек
У меня так:
<?php
NavBar::begin([
    'brandLabel' => Yii::$app->name,
    'brandUrl' => Yii::$app->homeUrl,
    'options' => [
        'class' => 'navbar-default navbar-fixed-top',
    ],
]);
$menuItems = [
    ['label' => 'Обо мне', 'url' => ['/site/about']],
    ['label' => 'Контакты', 'url' => ['/site/contact']],
];
if (Yii::$app->user->isGuest) {
    $menuItems[] = ['label' => 'Регистрация', 'url' => ['/site/signup']];
    $menuItems[] = ['label' => 'Вход', 'url' => ['/site/login']];
} else {
    $menuItems[] = ['label' => 'Выйти (' . Yii::$app->user->identity->username . ')', 'url' => ['/site/logout'], 'linkOptions' => ['data-method' => 'post']];
}
echo Nav::widget([
    'options' => ['class' => 'navbar-nav navbar-right'],
    'items' => $menuItems,
]);
NavBar::end();
?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы