2017-11-24 13 views
1

私はActionColumnボタンの視認性がこのように制御することができる理解:私が持っている私がyii2ドキュメントroleParamsの場合
http://www.yiiframework.com/doc-2.0/guide-security-authorization.htmlルールクラスでyii2 RBACを使用する場合、yii2 GridViewのActionColumnのボタンの表示を制御する方法は?

に基づいてRBACの承認、およびAuthorRuleルールクラスを作成している

<?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 

      'id', 
      'title', 
      'body:ntext', 

      // ['class' => 'yii\grid\ActionColumn'], 
      [ 
      'class' => 'yii\grid\ActionColumn', 
      'visibleButtons' => 
      [ 
       'update' => Yii::$app->user->can('updatePost'), 
       'delete' => Yii::$app->user->can('updatePost') 
      ] 

      ], 
     ], 
    ]); 
?> 

(ビューテンプレートで)これを実現しました:

if (\Yii::$app->user->can('updatePost', ['post' =>$model]){ 
//if the post is created by current user then do this 
} 

GridViewウィジェットのモデルまたはatleast idをように私は何かをする:ここで私の最終目標は、作成者ロールを持つユーザーのために、更新ボタンを削除することである

'visibleButtons' => 
    [ 
     'update' => Yii::$app->user->can('updatePost',['post' => \app\models\Post::findOne($howToGetThisId)]), 
     'delete' => Yii::$app->user->can('updatePost',['post' => \app\models\Post::findOne($howToGetThisId)]) 
    ] 

ポストは、そのユーザーによって作成された場合にのみ表示されます。これを達成するための他の考えも歓迎されます。

ありがとうございました!

答えて

0

あなたはvisibleButtonsと同じ操作を行うことができます。

'visibleButtons' => [ 
    'update' => function ($model) { 
     return \Yii::$app->user->can('updatePost', ['post' => $model]; 
    }, 
    'delete' => function ($model) { 
     return \Yii::$app->user->can('updatePost', ['post' => $model]; 
    }, 
] 
関連する問題