2017-06-16 50 views
0

是否可以使用 動作名稱及其參數爲Yii2中的模型創建自定義規則。規則基於模型的動作和參數情景

我知道,在模型規則可以通過行動創建。

因爲我有一個這樣的模型和控制器:

型號

public function rules() 
{ 
    $rules = [ 
     [['pre_approved_by', 'pre_approved_date'], 'required', 'on' => 'pre'], 
     [['first_approved_by', 'first_approved_date'], 'required', 'on' => 'first'], 
    ]; 
    return $rules; 
} 

控制器

public function acctionApprove($hierarchy, $id){ 
    $model = $this->findModel($id); 
    if($hierarchy != 1){ 
     $model->scenario = "pre"; 
    }else{ 
     $model->scenario = "first"; 
    } 

} 

請告知

回答

0

你可以創建一個條件驗證。有了這種規則,你可以編寫自己的功能。

例如:

['state', 'required', 'when' => function($model) { 
    return $model->country == 'USA'; 
}] 

有關詳細的解釋,請參閱official doc