Yii 2菜单显示列表取决于用户

kay*_*der 4 php menu navbar yii2

如何配置或自定义我的菜单,例如,如果我是管理员用户,我可以在导航栏上看到所有内容,例如,在我的情况下,用户(我可以创建,更新或用户的用户列表)删除一个),商店(就像用户,这是我可以配置特定商店的地方),交易然后是注销按钮.但是当普通用户/员工登录时,他/她将看到的唯一内容是" 交易"菜单和" 注销"按钮.

请帮忙.

编辑:这是我的菜单呈现代码:

<?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']
              ],
      ],
    ]);
?>
Run Code Online (Sandbox Code Playgroud)

aro*_*hev 5

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,
    ],
],
Run Code Online (Sandbox Code Playgroud)

Yoy还可以将这个条件放在额外的模型方法中以避免重复,就像isAdmin()User模型中一样.

官方文件: