变得未知 属性:yii\web\User::admin
Getting unknown property: yii\web\User::admin
我是 Yii 2 的新手,我想对非管理员用户隐藏一些导航栏项目。但是,我以某种方式收到一条错误消息,指出用户模型没有这样的 属性 称为 admin.
我很困惑,因为该模型有一个名为 admin 的布尔值属性。我一直在不同的网站上搜索,但到目前为止我似乎找不到解决方案。每当我以用户身份登录时,无论是否是管理员,都会显示导航栏项目。
下面是我在 main.php
中尝试做的事情
<header>
<?php
NavBar::begin([
'brandLabel' => Yii::$app->name,
'brandUrl' => Yii::$app->homeUrl,
'options' => [
'class' => 'navbar navbar-expand-md navbar-dark bg-dark fixed-top',
],
]);
echo Nav::widget([
'options' => ['class' => 'navbar-nav'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
['label' => 'Team', 'url' => ['/team/index'], 'visible' => Yii::$app->user->admin ? true : false],
['label' => 'User', 'url' => ['/user/index'], 'visible' => Yii::$app->user->admin ? true : false],
Yii::$app->user->isGuest ? (
['label' => 'Login', 'url' => ['/site/login']]
) : (
'<li>'
. Html::beginForm(['/site/logout'], 'post', ['class' => 'form-inline'])
. Html::submitButton(
'Logout (' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
. Html::endForm()
. '</li>'
)
],
]);
NavBar::end();
?>
</header>
我不明白为什么 Yii::$app->user->admin
不起作用。
我也试过Yii::$app->user->getIdentity('admin')
,但还是不行。正如我上面所说,用户模型确实有一个名为 admin 的属性,它具有布尔值。
非常感谢任何帮助。
那是因为 Yii::$app->user
不是您的用户模型的实例。它是 yii\web\User
组件的实例。
如果您按照指南进行操作,您已经让您的用户模型实现 yii\web\IdentityInterface
并将模型 class 设置为 identityClass 然后您可以访问用户模型 Yii::$app->user->identity
或 Yii::$app->user->getIdentity()
.
因此,要访问用户模型的管理员 属性,您必须这样做
Yii::$app->user->identity->admin
或 Yii::$app->user->getIdentity()->admin
.
我是 Yii 2 的新手,我想对非管理员用户隐藏一些导航栏项目。但是,我以某种方式收到一条错误消息,指出用户模型没有这样的 属性 称为 admin.
我很困惑,因为该模型有一个名为 admin 的布尔值属性。我一直在不同的网站上搜索,但到目前为止我似乎找不到解决方案。每当我以用户身份登录时,无论是否是管理员,都会显示导航栏项目。
下面是我在 main.php
<header>
<?php
NavBar::begin([
'brandLabel' => Yii::$app->name,
'brandUrl' => Yii::$app->homeUrl,
'options' => [
'class' => 'navbar navbar-expand-md navbar-dark bg-dark fixed-top',
],
]);
echo Nav::widget([
'options' => ['class' => 'navbar-nav'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
['label' => 'Team', 'url' => ['/team/index'], 'visible' => Yii::$app->user->admin ? true : false],
['label' => 'User', 'url' => ['/user/index'], 'visible' => Yii::$app->user->admin ? true : false],
Yii::$app->user->isGuest ? (
['label' => 'Login', 'url' => ['/site/login']]
) : (
'<li>'
. Html::beginForm(['/site/logout'], 'post', ['class' => 'form-inline'])
. Html::submitButton(
'Logout (' . Yii::$app->user->identity->username . ')',
['class' => 'btn btn-link logout']
)
. Html::endForm()
. '</li>'
)
],
]);
NavBar::end();
?>
</header>
我不明白为什么 Yii::$app->user->admin
不起作用。
我也试过Yii::$app->user->getIdentity('admin')
,但还是不行。正如我上面所说,用户模型确实有一个名为 admin 的属性,它具有布尔值。
非常感谢任何帮助。
那是因为 Yii::$app->user
不是您的用户模型的实例。它是 yii\web\User
组件的实例。
如果您按照指南进行操作,您已经让您的用户模型实现 yii\web\IdentityInterface
并将模型 class 设置为 identityClass 然后您可以访问用户模型 Yii::$app->user->identity
或 Yii::$app->user->getIdentity()
.
因此,要访问用户模型的管理员 属性,您必须这样做
Yii::$app->user->identity->admin
或 Yii::$app->user->getIdentity()->admin
.