Пользовательский тортError - PullRequest
1 голос
/ 06 апреля 2011

Вот что у меня есть:

comments_controller.php

if (empty($result)) { //$result is empty if comment does not exist
    $this->cakeError('error404', array('message'=>'Comment not found'));
} elseif ($result['spam'] == 1) {
    $this->cakeError('spam', array('message'=>'SPAM!!!'));
}

app_error.php

function error404($params) {
    $this->controller->set('title', 'Page not found');
    $this->controller->set('message', $params['message']);
    $this->_outputMessage('error404');
}

function spam($params) {
    $this->controller->set('title', 'Spam');
    $this->controller->set('message', $params['message']);
    $this->_outputMessage('spam');
}

И я создал error404.ctp и spam.ctp внутри app / views / errors

Проблема в том, что когда комментарийспам ($ result ['spam'] == 1), cakePHP загружает макет ошибки 404.Но как ни странно, он показывает сообщение для спам-комментария («СПАМ !!!»).

Если это комментарий, который не существует, загружается правильный макет ошибки 404.

Любойидеи?

РЕДАКТИРОВАТЬ: Проблема исправлена.Код был верным, но сервер пришлось перезапустить.Это не должно быть необходимо, но именно это решило проблему.Возможно, торт не указывал правильный путь к новому файлу * app_error.php *.

1 Ответ

0 голосов
/ 07 апреля 2011

Я очень быстро попробовал вашу настройку (CakePHP 1.3), и она работала нормально.

Я думаю, у вас есть опечатка в одном из имен файлов или имен классов, и она использует error404, потому что она можетЧто-то не найдено.

После проверки я включил бы отладчик, или вы можете начать добавлять операторы

die('got here: ' . __METHOD__ . __LINE__ );

, пока вы не отработаете порядок выполнения.

...