覆盖模型验证错误

时间:2011-05-06 17:36:45

标签: cakephp

我是CakePHP的新手。

我想使用模型验证机制,但是我无法覆盖显示的错误。我正在构建一个API,其中所有视图都需要以JSON呈现,并且我有一个JSON格式,所有错误都需要输出为。我已经定义了一个自定义AppError类,我已经成功地能够以这种格式定义自定义错误。

有没有办法使用AppError类来覆盖来自验证的错误消息的输出?

感谢。

2 个答案:

答案 0 :(得分:1)

我通过将这些方法添加到AppModel类来提出解决方案:

function validates($options = array()) {
    $result = parent::validates($options);
    if (!$result) {
        $this->_validateErrors();
    }

    return $result;
}

function _validateErrors() {
    foreach ($this->validationErrors as $code) {
            $this->cakeError('apiError', array('code' => $code)); // Custom JSON error.
            return;
    }
}

然后我在控制器中的Model :: save()调用之前手动调用$ this-> Model-> validates()。这似乎运作良好。

答案 1 :(得分:0)

据我所知,没有直接的方法可以从AppError类中获取验证错误。解决方法是在app / app_model.php中创建一个AppModel类,并使用onError()回调方法将错误传递给AppError类。

// app/app_model.php
class AppModel extends Model {

    public function onError() {
        // Pass the errors to your AppError class
        AppError::someErrorMethod($this->getErrors());
    }

}