Problem z deklaracją tablicy

0

Nie mogę znależć podpowiedzi na temat tego fragmentu kodu (to fragment layoutu widoku z aplikacji bazowej YII2) :

    echo Nav::widget([
        'options' => ['class' => 'navbar-nav navbar-right'],
        'items' => [
            ['label' => 'Home', 'url' => ['/site/index']],
            ['label' => 'About', 'url' => ['/site/about']],
            ['label' => 'Contact', 'url' => ['/site/contact']],
            
            Yii::$app->user->isGuest ? (
                // ['label' => 'Register', 'url' => ['/user/registration/register']]
                ['label' => 'Login', 'url' => ['/site/login']]
            ) : (
                '<li>'
                . Html::beginForm(['/site/logout'], 'post')
                . Html::submitButton(
                    'Logout (' . Yii::$app->user->identity->username . ')',
                    ['class' => 'btn btn-link logout']
                )
                . Html::endForm()
                . '</li>'
            )
        ],
    ]);

Chciałem dostawić we wnętrzu instrukcji warunkowej (Yii::$app->user->isGuest ?) dodatkowo ten element :
['label' => 'Register', 'url' => ['/user/registration/register']]
i nie wiem jak to tam wpisać aby nie wywoływać błędu. Nie pisałem jeszcze pod PHP 7.1 a nic nie wygoglowałem
i pierwszy raz spotykam deklarację tablicy jako parametr z instrukcją warunkową.
dziękuję pozdrawiam AK

0

Nie możesz tego zrobić w ten sposób. Za to możesz zrobić np. tak:

echo Nav::widget([
    'options' => ['class' => 'navbar-nav navbar-right'],
    'items' => array_merge([
            ['label' => 'Home', 'url' => ['/site/index']],
            ['label' => 'About', 'url' => ['/site/about']],
            ['label' => 'Contact', 'url' => ['/site/contact']],
        ],
        Yii::$app->user->isGuest ? (
            [['label' => 'Register', 'url' => ['/user/registration/register']],
            ['label' => 'Login', 'url' => ['/site/login']]]
        ) : [(
            '<li>'
            . Html::beginForm(['/site/logout'], 'post')
            . Html::submitButton(
                'Logout (' . Yii::$app->user->identity->username . ')',
                ['class' => 'btn btn-link logout']
            )
            . Html::endForm()
            . '</li>'
        )]
    )
]);

Jednak polecam wydzielić items do zmiennej żeby polepszyć czytelność tego zapisu.

0

Dziękuję bardzo, faktycznie jest słabo czytelne :). W międzyczasie znalazłem dokumentację modułu i wstawiłem element z argumentem visible :

 ['label' => 'Contact', 'url' => ['/site/contact']],
 ['label' => 'SignUp', 'url' => ['/user/registration/register'],'visible'=>Yii::$app->user->isGuest],

jezcze raz dzięki, powodzenia AK

1 użytkowników online, w tym zalogowanych: 0, gości: 1