Действие перед сохранением не запускается ajax-запрос

#php #ajax #yii #request

#php #ajax #yii #запрос

Вопрос:

Я обнаружил, что в Yii 1.1.14, если я сохраняю объект без отправки формы (на самом деле это ajax-запрос), то действие beforeSave не запускается. Итак, в следующих строках возникает ошибка, что created_at является обязательным и пустым:

 $Tour_Highlight_Model = new Tour_Highlight;
$Tour_Highlight_Model->name = $name;
$Tour_Highlight_Model->tour_id = $tour_id;
// $Tour_Highlight_Model->created_at = new CDbExpression('NOW()'); // MUST BE UNCOMMENT
$ActionResult = $Tour_Highlight_Model->save(); // BUT VALIDATION IN MODEL WORKS!

public function beforeSave() {
  if ($this->isNewRecord) {
    $this->created_at = new CDbExpression('NOW()');
  }
  return parent::beforeSave();
}
  

В чем дело?

Комментарии:

1. Это может быть ошибкой проверки?? $model->validate(); ??

Ответ №1:

Проверка модели выполняется до того, как вызывается событие сохранения, поэтому вам нужно использовать beforeValidate() вместо beforeSave().

Но лучше поместить ваш код в контроллер, а не в модель.

 if ($this->isNewRecord) {
    $this->created_at = new CDbExpression('NOW()');
  }