Laravel 4处理404错误

use*_*863 8 laravel laravel-4

我是Laravel的新手,我正在尝试捕获任何与现有路线不匹配的请求.目前我正在......

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

我已经按照文档页面App::missing()中的app/start/global.php描述创建了一个处理程序,但这没有帮助.我也试过创建一个处理程序,但这也没有帮助.App::error(function(NotFoundHttpException $exception, $code)

任何帮助,将不胜感激.

Laj*_*rek 20

你需要这个:在'app/start/global.php'中添加:

App::missing(function($exception)
 {
     return Response::view('errorView', array(), 404);
 });
Run Code Online (Sandbox Code Playgroud)

当然在视图中创建(在本例中)errorView.blade.php
编辑:此方法处理所有"404 Not Found"错误.

  • 虽然此解决方案有效,但不会将正确的404标头(或不同的标头)发送到浏览器. (2认同)
  • 要发送正确的404头,写回返Response :: view('errorView',array(),404); (2认同)

fid*_*per 3

这可能是由于文件中打开了调试app/config/app.php。尝试将该值转换为false并查看您的自定义处理程序是否“处理”它。

此外,您的错误处理程序需要返回一个响应,以便“短路”请求并实际响应错误处理程序的结果 - 您是否从App::error()处理程序返回值/响应类?(请向我们展示该代码)。

这里有一篇关于Laravel 4 错误处理的App::missing()文章,没有概述 Laravel 在发生错误时如何使用和处理的过程App::error()

请特别注意“Handler 类的主要内容”部分 - 它概述了您需要如何从处理程序返回某种类型的值,以便它不将异常传递给下一个处理程序(可能是您的 Whoops 错误输出,显示当debug设置为truein时app/config/app.php)。