Show/Hide 基于条件的网格视图操作列 - Yii2

Show/Hide Grid View Action Column Based On Condition - Yii2

我试图根据某些条件show/hide 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;
      }
  },
    .
    .
    .
]

我也试过这个方法。但是,没有运气。任何 help/hint/suggestion 都是可观的。

我搜索了 Yii2 GridView hide column conditionally

虽然没有什么可以阻止您在调用 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'];},
       ]

这里我使用了简单的逻辑来隐藏特定列的复选框

  • 将值设置为 null 或空白,以便在单击 select 所有复选框时无法 selected
  • 使用显示 none 属性 的 css
  • 隐藏复选框

希望这可以帮助您根据您的条件隐藏特定列。