beforeSave动作没有被触发ajax-request


beforeSave action is not triggered ajax-request

我发现,在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();
}

在save事件引发之前验证模型运行,因此您需要使用beforeValidate()而不是beforeave()。

但是最好将代码放在controller中,而不是model中。

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