Я пытался показать / скрыть ActionColumn на основании какого-то условия.
В моей системе определены 2 роли: Primary
& Secondary
, Я хотел спрятаться ActionColumn за Role Secondary
и показать ActionColumn за Role Primary
,
у меня есть один 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;
}
},
.
.
.
]
Я тоже так пытался. Но не повезло. Любая помощь / подсказка / предложение заметны.
я искал Yii2 GridView скрыть столбец условно.
Вы не можете сделать видимым вызываемый объект, хотя ничто не мешает вам установить переменную перед вызовом gridview.
В этом случае, однако, видимость зависит только от того, играют ли они основную роль, вы можете просто использовать:
'visible' => Yii::$app->userinfo->hasRole([AR::ROLE_PRIMARY])
Вы можете использовать условный оператор, чтобы скрыть определенный флажок в виде сетки
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'];},
]
Здесь я использовал простую логику, чтобы скрыть флажок для определенного столбца
Надеюсь, что это поможет вам скрыть конкретную колонку в зависимости от ваших условий.