当Cake没有说出什么问题时该怎么办?

时间:2013-10-02 04:01:01

标签: php cakephp cakephp-2.0 cakephp-2.1 cakephp-appmodel

当模型没有保存或返回任何类型的错误时该怎么办?

$data = array(
    'Model' => array(
        'field1' => 'value1',
        'field2' => 'value2',
    )
);

try {
    // Forget to add this
    $this->Model->set($data);

    if (!$this->Model->validates()) { // Returns true
        throw new GenericErrorException("Can't validate");
    }

    $this->Model->create();
    if (!$this->Model->save($data)) { // Returns false
        debug($this->Model->invalidFields()); // Empty array
        debug($this->Model->getDatasource()->getLog()); // Returns array without INSERT/UPDATE

        throw new GenericErrorException("Can't save");
    }
} catch(Exception $e) {
    // LOG ERROR
}

我能做些什么来验证发生了什么错误?

2 个答案:

答案 0 :(得分:0)

我不确定你在做什么。您应该根据POSTPUT请求保存数据:

public function add() {
    if ($this->request->is('post')) {
        if ($this->Model->save($this->request->data)) {
            // model saved; set flash message and redirect
        }
        else {
            // save failed; errors in $this->Model->validationErrors
        }
    }
}

如果您遵循CakePHP的惯例,您将获得更流畅的体验。在模型上调用save()也会尝试在保存之前验证您的数据,因此无需手动验证。

答案 1 :(得分:0)

添加$this->Model->validationErrors;总是做一些技巧。