Ich habe eine yii \ bootstrap \ Nav, wo ich mehrere Menüpunkte haben. Einer von ihnen ist das Abmelden. Betrachten Sie diese zwei Beispiele.Yii 2 Nav Widget sichtbar vs zugänglich
$menuItems = [
[
'label' => 'Logout ('. Yii::$app->user->identity->username. ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post'],
'visible' => !Yii::$app->user->isGuest,
],
]
vs
if (!Yii::$app->user->isGuest) {
$menuItems[] =
[
'label' => 'Logout ('. Yii::$app->user->identity->username. ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post'],
];
}
Meine Anwendung stürzt mit dem Fehler für die
Trying to get property of non-object
auf der Linie mit Yii :: app $> user-> identitäts> Benutzernamen ein. Ich benutze die zweite Lösung, die gut funktioniert, aber können Sie erklären, warum der Code unter Umgehung der 'sichtbaren' Parameter für den ersten Block ausgeführt wird.
Was passiert, wenn Sie 'setzen false' statt'! Yii :: app $> Benutzer -> isGuest'? – gmc
Ich bekomme den gleichen Fehler, es scheint, dass selbst wenn es nicht sichtbar ist, es immer noch ausgeführt wird. Wenn kein Benutzer angemeldet ist, wird eine Ausnahme ausgelöst. – user3410843