如何根据用户权限从Yii2 GridView隐藏行?

如何根据用户权限从Yii2 GridView隐藏行?,yii2,Yii2,我试图根据用户权限(RBAC)从GridView隐藏行。 (Yii::$app->user->can('readModel',['model'=>$model]);) 我假设我必须向搜索模型添加一些过滤器,但我无法找到如何将此过滤器添加到查询中。 也许有一个我还没有找到的更简单的解决方案,比如在GridView调用中添加一个参数 医生也不能真正帮助我理解这种特殊情况 提前感谢。一种方法是使用行选项为行分配适当的类 <?= GridView::widget([ 'dataProvid

我试图根据用户权限(RBAC)从
GridView
隐藏行。 (
Yii::$app->user->can('readModel',['model'=>$model]);

我假设我必须向搜索模型添加一些过滤器,但我无法找到如何将此过滤器添加到查询中。 也许有一个我还没有找到的更简单的解决方案,比如在
GridView
调用中添加一个参数

医生也不能真正帮助我理解这种特殊情况


提前感谢。

一种方法是使用行选项为行分配适当的类

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        .........
        ['class' => 'yii\grid\ActionColumn'],
    ],
   'rowOptions'=>function ($model){
        $class= (Yii::$app->user->can('readModel',  ['model' => $model]) ? 'hide' : 'swow';
         return $class;
    },

能否指定如何将权限分配给用户?i、 e.角色和权限我正在使用标准的Yii2
yii\rbac\DbManager
(使用
yii::$app->authManager
createRole
createPermission
方法来创建权限和角色。然后使用
assign
方法将用户分配到一个角色。我将继续回答这个问题,因为我更喜欢一种解决方案,它不添加任何行,而是使用CSS隐藏这些行。但是谢谢你的临时解决方案。如果我的答案是正确的(别名解决你的问题)应该是公平的,请将其标记为已接受。。你应该看看这个meta。我之所以喜欢省去行而不是隐藏行,是因为在我看来,只“隐藏”某个特定用户甚至不应该访问的内容似乎是不好的做法。当然,我也会检查控制器中是否有正确的权限,但我认为用户甚至不能发现它的存在。您的回答目前对我有帮助,但(在我看来)在实际应用程序中是不好的做法。我会按要求接受您的回答,但由于我是stackoverflow的新手,我想听听其他人对此事的看法。您已经拥有dataProvider中的价值。。如果要在gridview中使用值之前对其进行筛选,则不能选择或删除表单数据提供程序。。但是,如果您在gridview::widget或您的应用程序中有一个新的小部件,您可以根据自己的喜好编写一个新的小部件,或者只使用show或hide。这是因为GridVew小部件没有用于检查的预填充事件,所以该行是否可以显示/填充…希望这是清楚的…并且有用