根据条件显示/隐藏网格视图操作列 - Yii2

时间:2016-07-01 09:59:30

标签: php gridview yii2 yii2-basic-app yii2-widget

我试图根据某些条件显示/隐藏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;
      }
  },
    .
    .
    .
]

我也试过这种方式。但是,没有运气。任何帮助/提示/建议都很明显。

我搜索了Yii2 GridView hide column conditionally

2 个答案:

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

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

  • 设置值null或空白,以便在单击全选复选框
  • 时无法选择
  • 使用css
  • 的display none属性隐藏复选框

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