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

时间:2017-03-28 15:26:00

标签: yii2

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

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

Docs并没有真正帮助我理解这种特殊情况。

提前致谢。

1 个答案:

答案 0 :(得分:1)

一种方法可以基于使用行选项为行指定适当的类

<?= 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;
    },