Пользовательская ошибка cakeError

#cakephp #custom-error-pages

#cakephp #пользовательские страницы ошибок

Вопрос:

Это то, что у меня есть:

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 внутри приложения/ просмотров/ ошибок

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

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

Есть идеи?

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

Комментарии:

1. Какое значение имеет debug в app/config/core.php ?

2. Configure::write(‘debug’, 0); Теперь это исправлено.

3. Ошибка Cake звучит довольно забавно.

Ответ №1:

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

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

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

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

инструкции до тех пор, пока вы не разработаете порядок выполнения.

Комментарии:

1. После выполнения того, что вы упомянули, я заметил, что cake не улавливает вещи должным образом. Я попытался перезапустить apache, и по какой-то причине это устранило проблему. Странно.

2. Рад, что это исправлено. Кстати, здесь есть интересная заметка об ошибках и 404-х секундах: book.cakephp.org/view/1581/Miscellaneous