0

我试图根据某些条件显示/隐藏 ActionColumn 。在我的系统中,定义了 2 个角色:Primary& Secondary。我想隐藏ActionColumnRole Secondary显示ActionColumnRole Primary

我从$visiblevisible获得了一个属性选项。在哪里,并且工作正常。'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 隐藏列

4

2 回答 2

3

您不能将可见设置为可调用,尽管在调用 gridview 之前没有什么可以阻止您设置变量。

但在这种情况下,可见性仅取决于他们是否具有主要角色,您可以使用:

'visible' => Yii::$app->userinfo->hasRole([AR::ROLE_PRIMARY])
于 2016-07-01T10:08:34.333 回答
2

您可以使用条件语句在网格视图中隐藏特定复选框

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

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

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

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

于 2018-04-27T07:33:10.260 回答