2016-03-08 48 views
0

有沒有辦法在beforeAction中從路由器捕獲參數,所以它可以被控制器中的所有功能使用?Yii2 - 在beforeAction捕獲路由器中的參數

我有這樣的路由器:

'http://<user:\w+>.' . $domain . '/<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

我想用作爲ID的所有功能控制器,並使其可沒有將其注入功能?這可能嗎?

+0

在你的例子中*用戶*是參數? –

回答

0

的原料溶液可以攔截bindActionParams$params陣列:

class ParamController extends Controller { 
    public $user; 

    public function bindActionParams($action, $params) 
    { 
     if(isset($params['user'])){ 
      // may be some business based on $this or $action 
      $this->user = $params['user']; 
     } 
     return parent::bindActionParams($action, $params); // TODO: Change the autogenerated stub 
    } 
} 

當然,你需要ParamsController擴展所有的控制器。