public function rules()
{
return [
[['name', 'account', 'pwd'], 'string', 'max' => 11],
['account','required','message'=>'用戶名不能爲空'],
['pwd','required','message'=>'密碼不能爲空','on'=>'update']
];
}
複製代碼
$model = new User();
if(isset($_POST['User'])){
$model -> attributes = Yii::$app->request->post('User');
$model -> save();
}
複製代碼
這個時候在控制器沒有調用任何場景。他的結果是:用戶名驗證,密碼不驗證 若是在控制器加上一句ios
$model->scenario='update';
複製代碼
其結果是:用戶名,密碼都驗證了bash
若是這個時候再在模型加上幾句代碼:app
public function scenarios()
{
return [
'update'=>['pwd'],//在該場景下的屬性進行驗證,其餘場景和沒有on的都不會驗證
];
}
複製代碼
其結果是:用戶名沒有驗證,密碼驗證了post
還有要注意若是你在模型裏重寫了scenarios()方法,在控制器調用了場景,那調用的場景名稱必須在scenarios()方法裏有,不然出錯!ui