Как сделать 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,

Другие вопросы по тегам