yii2 通过rbac 控制 view层中按钮的显示或者隐藏 [ 2.0 版本 ]
一个团队里面有 角色有团长 管理员 普通团员
需要实现 团长可以修改所有人信息 管理员只能修改自己和普通团员信息
一个用户列表上中包括 团长 普通成员 和管理员
不同用户登陆后显示不同的按钮(如 团长登陆后 所有用户列表上都有修改按钮 管理员登陆后 只有自己和普通团员有修改按钮,团长修改按钮隐藏)
问题:如何实现
之前使用mdm Helper::checkRouter("update",['id'=>xxx]) 是可以实现,但是特别耗时(2000ms左右)
lito 补充于 2016-08-31 23:17
'class' => 'yii\grid\ActionColumn',
'template'=>'{view} {update} {fire} {manager}',
'header'=>'操作',
'visibleButtons'=>[
'update'=>function ($model, $key, $index) {
//...coding
return $model->status === 'editable';
}
],
或者这样?调用对应的RBAC RULE
lito 补充于 2016-09-01 14:01
三种解决方式:
第一
/**
* 按钮权限
* @auther lito
* @since V1.5.6
* @version V1.5.6
* @ctime 2016年9月1日 下午1:42:13
* @utime 2016年9月1日 下午1:42:13
**/
public function getButtonShow()
{
if($this->role==self::COMMONROLE) return true;
//团长
if($this->leader_id==Yii::$app->user->id) return true;
if($this->role==self::MANGERROLE&& ($this->leader_id==Yii::$app->user->id)) return true;
return false;
}
return $model->buttonShow;
第二
return Helper::checkRoute('update',['id'=>$key]);
第三
if(Yii::$app->user->can('用户管理',['id'=>$key]))
return true;
else
return false;
return Helper::checkRoute('update',['id'=>$key]);
lito
注册时间:2015-09-21
最后登录:2018-08-02
在线时长:6小时39分
最后登录:2018-08-02
在线时长:6小时39分
- 粉丝3
- 金钱50
- 威望0
- 积分110