8

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

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

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

任何帮助,将不胜感激。

4

5 回答 5

20

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

App::missing(function($exception)
 {
     return Response::view('errorView', array(), 404);
 });

当然,在视图中创建(在这种情况下)errorView.blade.php
编辑:此方法处理所有“404 Not Found”错误。

于 2013-07-15T23:59:54.817 回答
3

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

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

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

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

于 2013-07-15T22:06:59.817 回答
3

以下是发生 ModelNotFoundException 时如何抛出 404 错误

App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $exception, $code)
{
    return Response::view('errors.404', array(), 404);
});
于 2014-02-21T15:35:39.780 回答
1

应用程序-> 配置-> app.php

如果你做

'debug' => true,

对此

'debug' => false,

您将获得除调试模式之外的用户体验环境。请确保您已检查。

谢谢 :)

于 2013-11-03T09:02:51.627 回答
0

我能够使用以下代码使其工作。我让'debug' => true,在我的本地配置中。

在 app/start/global.php

App::error(function(Symfony\Component\HttpKernel\Exception\NotFoundHttpException $exception)
{
    Log::error($exception);

    $response = Response::make(View::make('response')
        ->with('data', null)
        ->with('meta', 'Error, incorrect path')
        ->with('pagination', null));

    $response->setStatusCode(404);
    $response->header('content-type', 'application/json', true);

    return $response;
});

如果有任何兴趣,我的观点的内容是

<?php 

    echo json_encode(array(
    'data' => $data,
    'pagination' => $pagination, 
    'meta' => $meta), JSON_PRETTY_PRINT); 

?>

主要的挑战是使用 Symfony\Component\HttpKernel\Exception\NotFoundHttpException 作为异常的类型,而不仅仅是 NotFoundHttpException。

通过使用 NotFoundHttpException,引发了 500 错误。

于 2014-09-25T09:41:00.600 回答