在我的控制器中,我有这个add函数:
public function add(){
$this->layout = false;
if($this->request->is('post')){
$this->Paciente->create();
$this->Paciente->set($this->request->data);
if ($this->Paciente->validates()) {
if($this->Paciente->save()){
$this->set('status', '200');
} else {
// debug($this->Paciente->validationErrors);
// ini_set('memory_limit', '-1');
// var_dump($this->Paciente);
$this->set('status', '101');
// $log = $this->Paciente->getDataSource()->getLog(false, false);
// debug($log);
// die;
}
} else {
// didn't validate logic
// $errors = $this->Paciente->validationErrors;
// debug($errors);
$this->set('status', '100');
}
} else
$this->set('status', '404');
}我正在发送帖子信息,状态始终是101。正如您所看到的,我已经尝试了很多次来找出错误所在,但是没有成功。
另外,我的模型(beforeSave,afterSave...)中也没有任何回调...
有人知道发生了什么吗?
发布于 2013-07-16 09:13:00
问题出在我发送帖子信息的方式:
我将变量设置为数据‘模型’,正确的方法是dataModel
感谢@mark,@AD7six,@liyakat和@Alex在这个问题上的帮助。
发布于 2013-07-13 18:25:51
你的
if ($this->Paciente->validates()) {
if($this->Paciente->save()) {
}是错误的。您正在验证两次。
请-如文档所述-使用false (save(null, false))来避免两次无效,或者简单地删除此处的validate()部分。您可以直接执行以下操作:
if ($this->Paciente->save($this->request->data)) {}不过,这本身不太可能导致您的问题。或者你有没有一些自定义的验证规则,在第二个(和错误的)触发器上会使一个字段无效?您可以在之后检查$this->Paciente->validationErrors来确认这一点。它应该是空的。如果它没有保存(并且肯定没有回调),并且如果它没有因为SQL错误而抛出异常,那么它很可能就是您的验证规则。
发布于 2013-11-06 00:37:55
我无法想象。当您像上面那样设置数组值时,它很可能会在php5.3 >中中断
https://stackoverflow.com/questions/17626271
复制相似问题