2017-01-03 15 views
1

我想限制我的情況updatePost這是由於根據一個AuthorRule筆者作用在控制器誰擁有特定權限的用戶,所有操作。 控制器旨在爲翻譯員指定帖子,而不是自己創建或更新帖子。如何在yii filter AccesControl中使用權限名稱時將參數傳遞給rbac規則?

規則只驗證用戶的帖子使用PARAM他的名字是AUTHOR_ID和價值是價值AUTHOR_ID後的屬性的創造者。到目前爲止,所有這些都是常見的東西。

我知道我可以在每個動作檢查

Yii::$app->user->can('updatePost', ['author_id' => <a value>]) 

函數的結果。不過,我在Yii中的指南,授權名(updatePost)也可以在行爲給予這樣寫着:

return [ 
    'access' => [ 
     'class' => AccessControl::className(), 
     'rules' => [ 
      [ 
       'allow' => true, 
       'actions' => ['index','create', 'view', 'update'], 
       'roles' => ['updatePost'], 
      ], 

,並在這種情況下,AuthorRule的執行方法將被調用。

我的問題是:「在這種情況下,將author_id傳遞給AuthorRule的執行函數的確切語法是什麼?」

回答

0

你不能傳遞這樣的參數。我猜它沒有準備好參數,因爲通常在這個步驟中你不知道確切的值(這些通常作爲參數傳遞給動作)。

移動這個檢查的行動,或者如果您知道值使用matchCallback,如:

'matchCallback' => function ($rule, $action) { 
    return Yii::$app->user->can('updatePost', ['author_id' => <a value>]); 
} 
+0

謝謝。這也是我的猜測,但我需要確認。 – meaulnes

+0

乾杯。然後標記爲已解決。 – Bizley

相關問題