php - Yii2 菜单栏对特定用户的可见性

标签 php menu navbar yii2

在我的 main.php ,我有一个菜单:

'items' => [
    ['label' => 'Home', 'url' => ['/site/index']],
    ['label' => 'Biz Staff', 'url' => ['bizstaff/index'], 'visible' => User::isBizAdmin(), 'items' => [
        ['label' => 'Staff List', 'url' => 'index.php?r=user/index'],
        ['label' => 'Add Staff', 'url' => 'index.php?r=user/create'],
    ]],

    ['label' => 'Transaction', 'url' => ['transactions/index'], 'visible' => User::isBizAdmin() || User::isBizStaff(), 'items' => [
        ['label' => 'Transactions', 'url' => 'index.php?r=transactions/index'],
        ['label' => 'Add Transactions', 'url' => 'index.php?r=transactions/create'],
    ]],

    Yii::$app->user->isGuest ?
        ['label' => 'Login', 'url' => ['/site/login']] :
        ['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
          'url' => ['/site/logout'],
          'linkOptions' => ['data-method' => 'post']
        ],
    ],

在这里,我以 superadmin 的身份登录(请注意,只有HomeLogout 菜单对superadmin 用户)。在主页(主页菜单)内有一个 Biz Admins 列表,它位于 GridView 中。小部件。它有一个操作 列,其中放置了查看、更新和删除图标。当我单击特定 Biz Admin 的 View 图标时,它将呈现该 Biz Admin 的详细 View 页面,其中可以看到其Store NameList of Staff。在此页面中,有一个 View Store 按钮,该按钮将重定向到 bizadmin查看/页面。

每当superadmin登陆bizadmin查看/页面,菜单栏现在应该更改为:

Home, Biz Staff, Transaction, Logout

我该怎么做?是否设置在visible属性? 非常感谢您的任何回答。我目前陷入了这个问题。

最佳答案

是的。您应该使用 visible 属性。 'visible' => true'visible' => false

或者你可以组装一个数组。像那样:

NavBar::begin([
                'brandLabel' => 'My Company',
                'brandUrl' => Yii::$app->homeUrl,
                'options' => [
                    'class' => 'navbar-inverse navbar-fixed-top',
                ],
            ]);
            $menuItems = [
                ['label' => 'Home', 'url' => ['/site/index']],
                ['label' => 'About', 'url' => ['/site/about']],
                ['label' => 'Contact', 'url' => ['/site/contact']],
            ];
            if (Yii::$app->user->isGuest) {
                $menuItems[] = ['label' => 'Signup', 'url' => ['/site/signup']];
                $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
            } else {
                $menuItems[] = [
                    'label' => 'Logout (' . Yii::$app->user->identity->username . ')',
                    'url' => ['/site/logout'],
                    'linkOptions' => ['data-method' => 'post']
                ];
            }
            echo Nav::widget([
                'options' => ['class' => 'navbar-nav navbar-right'],
                'items' => $menuItems,
            ]);
            NavBar::end();

参见高级模板 - https://github.com/yiisoft/yii2-app-advanced/blob/master/frontend/views/layouts/main.php

关于php - Yii2 菜单栏对特定用户的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28621724/

相关文章:

javascript - php图片上传带水印并调整大小

html - Bootstrap v5.0.0-beta1 - ml-auto 不适用于导航栏

php5-fpm child 和请求

php - 我怎样才能解决这个简单的 php MySQL 搜索查询

php - 从表单发布信息时,使用 $_REQUEST 还是 $_POST 更好?

javascript - MENU 手机版不显示

html - Bootstrap 菜单在页面中心对齐且响应灵敏

java - 点击 Galaxy Samsung S3 上的菜单按钮时应用停止

javascript - meteor 应用程序中的 jasny-bootstrap 导航栏不起作用

javascript - Bootstrap 3 导航栏部分