Как сделать Yii до того, как Save сломает сохранение
В некоторых случаях я хотел бы, чтобы beforeSave в поведении Yii прерывал сохранение и возвращал ошибку. То, что я пытался, а не работал, это:
public function beforeSave($event) {
parent::beforeSave($event);
$tested_value = null;
if(is_null($tested_value)){
$this->validationErrors = Yii::t('app', 'Ops! Error');
return false;
}
}
И в контроллере:
$model=new Post;
if($model->save()){
// no matter what this is always executed
} else {
print_r($model->validationErrors);die;
}
1 ответ
Решение
Как задокументировано здесь: если вы переопределите beforeSave($event)
метод в CActiveRecordBehavior
, вы должны установить isValid
собственность $event
в false, если вы хотите предотвратить сохранение модели владельца.
if($preventSave) {
$event->isValid = false;
}
Также обратите внимание, что это $model->errors
не $model->validationErrors
,