有個mobile字段,想只修改這個字段的時候驗證爲必填,建立的時候不是必填項ios
咱們的場景就命名爲editmobile吧segmentfault
public function scenarios() { return [ 'editmobile' => ['mobile'], ]; }
修改rulesapp
public function rules() { return [ [['company', 'email'], 'string', 'max' => 60], [['company', 'city'], 'required'], [['mobile'], 'required',"on"=>["editmobile"]], ]; }
$model = Info::find()->where(['t_id'=> $id])->one(); $model->setScenario('editmobile'); //or $model->scenario = 'editmobile'; $model->load(Yii::$app->request->post()); if($model->save){ //todo }
起做用了
可是使用create的時候,保存卻出了問題,提示unknown scenarios:defaultpost
後來找文章,是由於設置場景的時候,直接把父類的場景覆蓋了。因此應該這樣寫scenariosui
public function scenarios() { $scenarios = parent::scenarios(); $scenarios['editmobile'] = ['mobile']; return $scenarios; }
這樣就ok了。
參考文章:https://segmentfault.com/q/10...code