Php Yii 2菜单显示列表取决于用户
如何配置或自定义我的菜单,例如,如果我是管理员用户,我可以看到导航栏上的所有内容,例如,在我的情况下,用户(可以创建、更新或删除的用户列表),存储(与用户一样,这是我可以配置特定存储的地方),交易然后单击注销按钮。但是当一个普通用户/员工登录时,他/她将看到的唯一东西是事务菜单和一个注销按钮 请帮忙 编辑: 以下是我的菜单渲染代码:Php Yii 2菜单显示列表取决于用户,php,menu,navbar,yii2,Php,Menu,Navbar,Yii2,如何配置或自定义我的菜单,例如,如果我是管理员用户,我可以看到导航栏上的所有内容,例如,在我的情况下,用户(可以创建、更新或删除的用户列表),存储(与用户一样,这是我可以配置特定存储的地方),交易然后单击注销按钮。但是当一个普通用户/员工登录时,他/她将看到的唯一东西是事务菜单和一个注销按钮 请帮忙 编辑: 以下是我的菜单渲染代码: <?php echo Menu::widget([ 'options' => ['id' => "nav-mobile",
<?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' => [
// 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(“后端用户索引”)
如何在应用程序中确定用户角色?你实现了RBAC吗?或者例如,角色存储在单独列的users表中?Hi@arogachev,我没有使用RBAC。我使用了你提到的第二个,在我的用户表的特定列中存储了一个用户类型的用户。显示菜单呈现代码。我只是在代码中粘贴了
'visible'=>Yii::$app->user->identity->role==user::role\u ADMIN,
,我得到了一个错误:获取未知属性:app\models\user::role
,这只是一个例子,根据您的姓名更正。我应该在USER\u-TYPE\u-ADMIN
常量中添加什么?如何通过USER\u-TYPE
确定ADMIN?我的USER\u-TYPE
可以是SuperAdmin
,BizAdmin
或BizStaff
。我将它们放在我的数据库(phpmyadmin)中的enum
'items' => [
// Show users section for administrators only
[
'label' => 'Users',
'url' => ['/users/index'],
'visible' => \Yii::$app->user->can("BackendUsersIndex"),
],
],