我想在CakePHP 2.1中为错误创建自定义视图
我在这里一直在阅读以下问题:CakePHP 2.0 - 如何制作自定义错误页面?
但有些东西不能按预期工作!
1.)异常和错误似乎不是一回事,好像我去了一个伪造的网址我得到了内置的404页面,但如果我在控制器中手动执行一个未发现的异常,它将调用自定义视图...为什么是这样?我认为Cake中的所有错误都经历了例外情况?
2.)我正在尝试渲染视图而不是实际重定向用户...例如:
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
$this->controller->redirect(array('controller' => 'errors', 'action' => 'error404'));
}
}
Run Code Online (Sandbox Code Playgroud)
而不是我正在尝试的重定向:
$this->controller->layout = null;
$this->controller->render('/Errors/error404');
Run Code Online (Sandbox Code Playgroud)
但我最终得到的只是一个空白页......这是为什么?这只发生在进行手动异常时?
有人可以回答这两个问题吗?谢谢
我终于成功了解了这个问题!看看github的代码,我已经设法让它工作了.这是我的AppExceptionRenderer.php:
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function missingController($error) {
$this->controller->render('/Errors/error404', 'layout');
$this->controller->response->send();
}
public function missingAction($error) {
$this->missingController($error);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想调用你的控制器回调,你必须在beforeFilter()之前做这样的事情:
$this->controller->beforeFilter();
Run Code Online (Sandbox Code Playgroud)
那$ this-> controller-> response-> send(); 线是踢球者.希望这适合你!