Я пытаюсь вынести все свои ошибки на одну пользовательскую страницу в 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 вместо этого? Или это невозможно?
Вы должны переопределить следующие методы:
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 в качестве нового пользовательского макета.
Других решений пока нет …