2017-03-28 4 views
2

ユーザー権限(RBAC)に基づいてGridViewから行を非表示にしようとしています。 (Yii::$app->user->can('readModel', ['model' => $model]);ユーザ権限に基づいてYii2 GridViewから行を隠すには?

検索モデルにいくつかのフィルタを追加する必要があると仮定しましたが、このフィルタをクエリに追加する方法がわかりません。 GridViewコールに引数を追加するなど、まだ見つけられていない簡単な解決策がありますか?

この特定の状況についても、ドキュメントではわかりません。

ありがとうございます。

+0

ソリューションを持っているあなたは、あなたにあなたの権限を割り当てるしている方法を指定できますユーザーですか?つまり役割と権限 –

+0

私は、権限と役割を作成するために、標準のYii2 'yii \ rbac \ DbManager'(' Yii :: $ app-> authManager'を使って) 'createRole'と' createPermission'メソッドを使用しています。また、 'assign'メソッドを使ってユーザをロールに割り当てます。 – Jaatoo

答えて

0

の方法は、ここでは、行のオプション

<?= GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 
     ......... 
     ['class' => 'yii\grid\ActionColumn'], 
    ], 
    'rowOptions'=>function ($model){ 
     $class= (Yii::$app->user->can('readModel', ['model' => $model]) ? 'hide' : 'swow'; 
     return $class; 
    }, 
+0

私はこの問題を開いたままにするつもりです。なぜなら、CSSでそれらを隠している行を追加しないソリューションを好むからです。しかし、**一時的な**ソリューションをありがとう。 – Jaatoo

+0

私の答えが正しければ(エイリアスはあなたの問題を解決する)合格と見なされるべきです..あなたはこのメタを見てくださいhttp://meta.stackexchange.com/questions/5234/how-does-accepting-an -answer-work – scaisEdge

+0

私がそれらを隠す代わりに行を残しておきたい理由は、私にとっては、特定のユーザーがアクセスできない何かを "隠す"ことしか悪い習慣に思えるからです。確かに、コントローラの正しいパーミッションもチェックしていますが、ユーザーが存在の有無を知ることすらできないはずです。あなたの答えは今のところ私を助けますが、私の意見では、ライブアプリケーションでは悪い練習になるでしょう。私はあなたの答えを要求通りに受け入れますが、私はstackoverflowを初めて利用しているので、この問題に関して誰かの意見を聞きたいと思います。 – Jaatoo

0

を使用して行に適切なクラスを割り当てるに基づいてclould

solution

+0

詳細を教えてください。それは私のように見えるので、列ではなく、行を削除することです.. – Jaatoo

関連する問題