有个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