控制器中是否有方法或函数可以告知是否触发了404错误?我希望每个人都能在主页上重定向,而不是看到404页面。
谢谢!
答案 0 :(得分:7)
要捕获和处理404错误,您需要扩展ErrorHandler
类并覆盖error404
方法。为此,请使用以下代码创建文件app/app_error.php
:
class AppError extends ErrorHandler {
function error404($params) {
// redirect to homepage
$this->controller->redirect('/');
}
}
答案 1 :(得分:0)
对于CakePHP 2.x,我使用了
// app/Lib/Error/AppExceptionRenderer.php
<?php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function error400($error) {
return $this->controller->redirect('/');
}
}
//app/Config/Core.php
Configure::write('debug', 0);
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
//'renderer' => 'ExceptionRenderer',
'renderer' => 'AppExceptionRenderer',
'log' => true
));
答案 2 :(得分:0)
简单的方法是将它放在你的app / Config / core.php
中Configure::write('Exception.handler', function ($error) {
header('Location: https://www.example.com');
});
请注意,PHP v5.3 +
支持匿名函数作为回调答案 3 :(得分:0)
CakePHP v 2.x
使用AppController :: appError()
实现此方法是实现自定义的替代方法 异常处理程序它主要是为了向后提供 兼容性,不建议用于新应用程序。这个 调用controller方法而不是默认异常 渲染。它接收抛出的异常作为唯一的参数。您 应该在该方法中实现您的错误处理:
第1步:: 文件:app / Controller / AppController.php
someField
第2步::创建自定义视图。应用/视图/页/ notfound.ctp
在此文件中编写自定义消息。
参考:
http://book.cakephp.org/2.0/en/development/exceptions.html#using-appcontroller-apperror