0

いくつかの条件に基づいてActionColumn を表示/非表示にしようとしていました。私のシステムでは、2 つのロールが定義されています: Primary& Secondary. のActionColumnを非表示にして、 のActionColumnRole Secondary表示したかったのです。Role Primary

$visiblevisibleから 1 つの属性オプションを取得しました。どこで、そして正常に動作しています。'visible'=> true'visible'=> false

<?
[
  'class' => 'yii\grid\ActionColumn',
  'visible' => false,
    .
    .
    .
]

しかし、問題は:ある条件に基づいて動的に/visibleとしてオプションを設定したかったことです。TrueFalse

<?
[
  '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を検索しました。

4

2 に答える 2

3

グリッドビューを呼び出す前に変数を設定するのを止めるものは何もありませんが、callable に visible を設定することはできません。

ただし、この場合、可視性は主な役割を持っているかどうかにのみ依存します。次を使用できます。

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

ここでは、単純なロジックを使用して特定の列のチェックボックスを非表示にしました

  • 値をnullまたは空白に設定して、すべて選択チェックボックスをクリックしたときに選択できないようにします
  • css の display none プロパティを使用してチェックボックスを非表示にする

これが、条件に基づいて特定の列を非表示にするのに役立つことを願っています。

于 2018-04-27T07:33:10.260 に答える