beforeSave动作未触发ajax-request

时间:2014-07-04 08:18:12

标签: php ajax yii request

我在Yii 1.1.14中发现,如果我保存对象而没有表单提交(实际上是ajax-request),则不会触发beforeSave动作。 因此,下一行会引发create_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 个答案:

答案 0 :(得分:0)

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

但最好将代码放入控制器,而不是模型。

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