Yii 2 菜单显示列表取决于用户
Yii 2 Menu Display List Depending on User
如何配置或自定义我的菜单,例如,如果我是 admin 用户,我可以在我的导航栏上看到所有内容,例如,在我的例子中,Users(我可以在其中创建、更新或删除一个用户的用户列表),Stores(就像用户一样,这是我可以配置特定商店),Transactions 然后是 Logout 按钮。但是当普通user/staff登录时,he/she唯一会看到的是交易菜单和注销 按钮。
请帮忙。
编辑:
这是我的菜单渲染代码:
<?php
echo Menu::widget([
'options' => ['id' => "nav-mobile", 'class' => 'right side-nav'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
Yii::$app->user->isGuest ?
['label' => 'Login', 'url' => ['/site/login']] :
['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
],
],
]);
?>
items
数组中的每一项都有 visible
属性。在那里传递返回布尔值的表达式。
'items' => [
// Show users section for administrators only
[
'label' => 'Users',
'url' => ['/users/index'],
'visible' => !Yii::$app->user->isGuest && Yii::$app->user->identity->user_type == User::USER_TYPE_SUPER_ADMIN,
],
],
Yoy 也可以将此条件放在其他模型方法中以避免重复,例如 User
模型中的 isAdmin()
。
官方文档:
我觉得这个功能在这里也很有用
\Yii::$app->user->can("BackendUsersIndex")
'items' => [
// Show users section for administrators only
[
'label' => 'Users',
'url' => ['/users/index'],
'visible' => \Yii::$app->user->can("BackendUsersIndex"),
],
],
如何配置或自定义我的菜单,例如,如果我是 admin 用户,我可以在我的导航栏上看到所有内容,例如,在我的例子中,Users(我可以在其中创建、更新或删除一个用户的用户列表),Stores(就像用户一样,这是我可以配置特定商店),Transactions 然后是 Logout 按钮。但是当普通user/staff登录时,he/she唯一会看到的是交易菜单和注销 按钮。
请帮忙。
编辑: 这是我的菜单渲染代码:
<?php
echo Menu::widget([
'options' => ['id' => "nav-mobile", 'class' => 'right side-nav'],
'items' => [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
Yii::$app->user->isGuest ?
['label' => 'Login', 'url' => ['/site/login']] :
['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
],
],
]);
?>
items
数组中的每一项都有 visible
属性。在那里传递返回布尔值的表达式。
'items' => [
// Show users section for administrators only
[
'label' => 'Users',
'url' => ['/users/index'],
'visible' => !Yii::$app->user->isGuest && Yii::$app->user->identity->user_type == User::USER_TYPE_SUPER_ADMIN,
],
],
Yoy 也可以将此条件放在其他模型方法中以避免重复,例如 User
模型中的 isAdmin()
。
官方文档:
我觉得这个功能在这里也很有用
\Yii::$app->user->can("BackendUsersIndex")
'items' => [
// Show users section for administrators only
[
'label' => 'Users',
'url' => ['/users/index'],
'visible' => \Yii::$app->user->can("BackendUsersIndex"),
],
],