我试图将所有错误强制到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状态代码?或者是不可能的?
答案 0 :(得分:1)
您必须覆盖以下方法:
ExceptionRenderer::error400($error)
ExceptionRenderer::error500($error)
或者,您可以使用以下内容覆盖 ExceptionRenderer:_outputMessage($ template):
protected function _outputMessage($template) {
$this->controller->layout = 'my_error';
parent::_outputMessage($template);
}
将文件/app/View/Layouts/my_error.ctp添加为新的自定义布局。