#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