Принудительно применить все ошибки к пользовательской странице ошибок в CakeStack Overflow

Я пытаюсь вынести все свои ошибки на одну пользовательскую страницу в Cakephp (2.0), но большинство учебных пособий, которые я нахожу, предназначены для очень специфических кодов ошибок. Я хочу, чтобы он отображал только одну страницу ошибок, поэтому сначала я указал все ошибки определенного состояния ошибки на одной странице ошибок. Но после дальнейшего тестирования я заметил, что другие коды не были захвачены.

Мне нужен мой код, чтобы захватить все коды ошибок http на одной странице ошибок.

Это мой код:

Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'AppExceptionRenderer',
'log' => true
));

И мой AppExceptionRenderer:

<?php
App::uses('ExceptionRenderer', 'Error');

class AppExceptionRenderer extends ExceptionRenderer {

public function internalError($error) {
$this->controller->beforeFilter();
$this->controller->set('title_for_layout', 'Internal Server Error');
$this->controller->render('/Errors/error500');
$this->controller->response->send();

... All the other error handlers are similar to this, but very limited since there are a lot of client and server errors
} ?>

Кажется, мои страницы шаблонов работают нормально, поэтому я их не включил.

Как я могу изменить код, чтобы охватить каждый код статуса http вместо этого? Или это невозможно?

1

Решение

Вы должны переопределить следующие методы:

ExceptionRenderer::error400($error)
ExceptionRenderer::error500($error)

Кроме того, вы можете переопределить ExceptionRenderer: _outputMessage ($ шаблон) с чем-то вроде:

protected function _outputMessage($template) {
$this->controller->layout = 'my_error';
parent::_outputMessage($template);
}

И добавьте файл /app/View/Layouts/my_error.ctp в качестве нового пользовательского макета.

1

Другие решения

Других решений пока нет …