【发布时间】:2017-05-01 13:07:11
【问题描述】:
我有一个 yii\bootstrap\Nav,其中有几个菜单项。其中之一是注销。考虑这两个例子。
$menuItems = [
[
'label' => 'Logout ('. Yii::$app->user->identity->username. ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post'],
'visible' => !Yii::$app->user->isGuest,
],
]
对
if (!Yii::$app->user->isGuest) {
$menuItems[] =
[
'label' => 'Logout ('. Yii::$app->user->identity->username. ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post'],
];
}
我的应用程序因
的错误而崩溃Trying to get property of non-object
就行了 Yii::$app->user->identity->username。 我使用第二个解决方案,效果很好,但你能解释一下为什么代码执行绕过第一个块的“可见”参数吗?
【问题讨论】:
-
如果你用
false代替!Yii::$app->user->isGuest会发生什么? -
我得到同样的错误,似乎即使它不可见,它仍然执行。因此,如果没有登录用户,则会引发异常。
标签: yii yii2 yii2-advanced-app