我检查了this question和cookbook section 我创建了这样的代码并完成了这个步骤:
在app / Config / core.php
中Configure::write('Exception.handler', 'AppExceptionHandler::handle');
在app / Config / bootstrap.php
中App::uses('AppExceptionHandler', 'Lib');
在app / Lib / AppExceptionHandler.php
中class AppExceptionHandler {
public static function handle($error) {
$errorCode = $error->getCode();
if ($errorCode == 404) {
header("HTTP/1.0 404 Not Found");
} elseif ($errorCode == 500) {
header("HTTP/1.0 500 Internal Server Error");
}
echo "here is something is wrong";
}
}
除渲染部分外,一切正常 到目前为止,我只能写“出错了”,但我无法在视图文件中查看。
在“App / Controller”文件夹中,我有“ErrorsController.php” 我得到一个异常时需要运行ErrorsController。所以我将在控制器的视图文件中进行渲染。
修改
class ErrorsController extends AppController {
function beforeFilter() {
if ( isset($this->request->params['pass'][0]) ) {
if ($this->request->params['pass'][0] == "404") {
$this->response->statusCode('404');
}
}
}
public function index($typeOfError) {
echo "here I am $typeOfError";
}
}
当我进入example.com/errors/index/404
时输出是“这里有问题”,但我需要它“在这里我是404”。因为当我进入ErrorsController的动作并发送404标题时,我被重定向到AppHandler的句柄。那么我该如何呈现自己的观点呢?
此问题仍然存在..