Yii2.0 簡單場景

模型層

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

相關文章
相關標籤/搜索