Показать / скрыть сетку Просмотреть столбец действий на основе условия — Yii2

Я пытался показать / скрыть 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 скрыть столбец условно.

0

Решение

Вы не можете сделать видимым вызываемый объект, хотя ничто не мешает вам установить переменную перед вызовом gridview.

В этом случае, однако, видимость зависит только от того, играют ли они основную роль, вы можете просто использовать:

'visible' => Yii::$app->userinfo->hasRole([AR::ROLE_PRIMARY])
3

Другие решения

Вы можете использовать условный оператор, чтобы скрыть определенный флажок в виде сетки

 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'];},
]

Здесь я использовал простую логику, чтобы скрыть флажок для определенного столбца

  • Установите значение NULL или пустым, чтобы его нельзя было выбрать, когда вы нажимаете на флажок выбора всех
  • Снимите флажок, используя display no свойство css

Надеюсь, что это поможет вам скрыть конкретную колонку в зависимости от ваших условий.

0

По вопросам рекламы [email protected]