我试图根据某些条件显示/隐藏ActionColumn 。
在我的系统中,定义了2个角色:Primary
& Secondary
。我想为Role Secondary
隐藏 ActionColumn ,并为Role Primary
显示 ActionColumn 。
我从$visible获得了一个visible
属性选项。 'visible'=> true
和'visible'=> false
工作正常的地方。
<?
[
'class' => 'yii\grid\ActionColumn',
'visible' => false,
.
.
.
]
但是,问题:我想根据某些条件动态地将visible
选项设置为True
/ False
。
<?
[
'class' => 'yii\grid\ActionColumn',
'visible' => function ($data) {
if (Yii::$app->userinfo->hasRole([AR::ROLE_PRIMARY])) {
return true;
}
if (Yii::$app->userinfo->hasRole([AR::ROLE_SECONDARY])) {
return false;
}
},
.
.
.
]
我也试过这种方式。但是,没有运气。任何帮助/提示/建议都很明显。
答案 0 :(得分:3)
虽然在调用gridview之前没有什么可以阻止你设置变量,但是你无法设置可调用的可见。
在这种情况下,可见性仅取决于它们是否具有主要角色,您可以使用:
debugger;
答案 1 :(得分:0)
您可以使用条件语句隐藏网格视图中的特定复选框
Here is simple code which works for me
[
'class' => 'yii\grid\CheckboxColumn',
'checkboxOptions' => function($dataProvider) {
return ["value" => ($dataProvider['tiIsPaid'] == 0)?$dataProvider['iDriverEarningId']:'',"style"=>($dataProvider['tiIsPaid'] == 0)?'':'display:none'];},
]
这里我使用简单的逻辑来隐藏特定列的复选框
希望这可以帮助您根据自己的条件隐藏特定列。