【发布时间】:2021-04-23 22:44:36
【问题描述】:
我的数据库中有一个“用户”表,我在 Kartik 的 GridView 中显示该表的内容,如下所示:
<?php
$gridColumns = [
[
'class' => 'kartik\grid\SerialColumn',
'width' => '20px',
],
'email',
'name',
'surname',
[
'class' => 'kartik\grid\BooleanColumn',
'label' => 'Disabled?',
'attribute' => 'isDisabled',
'trueLabel' => 'Yes',
'falseLabel' => 'No'
],
[
'class' => 'kartik\grid\ActionColumn',
'width' => '100px',
],
];
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => $gridColumns,
'pjax' => true,
'bordered' => true,
'striped' => false,
'condensed' => false,
'responsive' => true,
'hover' => true,
'panel' => [
'type' => GridView::TYPE_PRIMARY,
'heading' => "<h3 class=\"panel-title\"><i class=\"glyphicon glyphicon-user\"></i>$this->title </h3>",
'after' => false,
'before' => false
],
]);
?>
我也使用 RBAC,我有 2 个角色(管理员和经理)。
我需要做什么
我需要在上面的 GridView 中放入每个用户的角色,并且还可以按该角色过滤数据。
最好该“角色”列的类应该是“kartik\grid\EnumColumn”,因为我只有 2 个角色。
我不知道从哪里开始,任何提示都可以。
【问题讨论】:
-
为什么要迭代角色,但每次迭代都重新分配它们?由于您只有两个角色,因此您也可以这样做
return Yii::$app->user->can('admin') ? 'admin' : 'manager';假设角色是独立的,或者经理是 admin 的孩子,这将起作用。 -
谢谢你的建议,我没想到!
-
@RaulSauco 您的代码将始终返回当前登录用户的角色,但他需要网格中当前行的用户角色。
-
@MichalHynčica 好点,我没注意到。然后
Yii::$app->authManager->getRolesByUser(...)将是要走的路。
标签: gridview yii2 roles rbac kartik-v