Переопределить модель проверки ошибок - PullRequest
0 голосов
/ 06 мая 2011

Я новичок в CakePHP.

Я хотел бы использовать механизм проверки модели, но у меня возникают проблемы с переопределением отображаемых ошибок.Я строю API, где все представления должны быть отображены в JSON, и у меня есть формат JSON, который должен выводить все ошибки как.Я определил пользовательский класс AppError и успешно смог определить пользовательские ошибки в этом формате.

Есть ли способ использовать класс AppError для переопределения вывода сообщений об ошибках, поступающих из проверки?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Я нашел решение, добавив эти методы в мой класс 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;
    }
}

Затем я вручную вызываю $ this-> Model-> validates () перед вызовом Model :: save () в моем контроллере. Кажется, это работает хорошо.

0 голосов
/ 07 мая 2011

Насколько я знаю, нет прямого способа получить ошибки валидации из вашего класса AppError.Обходным путем будет создание класса AppModel в app / app_model.php и использование метода обратного вызова onError () для передачи ошибки в класс AppError.

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

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...