拉拉维尔中的错误处理,如何在路由上指定


Error Handling in Laravel, how can specify on Routes?

这是最基本的

,我想处理来自我的API的错误,并确保通过API抛出的所有错误都给出json响应,但对于网站,我希望发送HTML响应。

如果有更好的方法,那么纯粹应用 http://laravel.com/docs/requests#request-information 中的逻辑并使用类似的东西:

if (Request::is('admin/*'))
{
    //
}

这有效,但对于可能抛出的每个异常类型执行此操作似乎有点笨拙?文档似乎没有任何内容,但我在徘徊,如果有什么可能起作用的,所以可以为设置的路由通配符应用错误吗?像这样:

App::error('admin/*', function(Exception $exception)
{
    Log::error($exception);
});

可以添加 App::error 筛选器,并在该筛选器中执行路由检查,然后以 json 格式发送响应。一个简单的例子,如下所示:

App::error(function(Exception $exception) {
    if (Request::is('api/*')) {
        $message = get_class($exception) . ":: message: " . $exception->getMessage();       
        return Response::json(["success"=>false,"message"=>$message]);
    }
});
您可以使用

路由组 http://laravel.com/docs/routing#route-groups 并对组应用筛选器,或者,如果您在前缀路由组中声明了 App::error 方法,则可以使用 App::error 方法 http://four.laravel.com/docs/routing#route-prefixing 。我不是100%的方法是否有效,但是如果您没有运气,Laravel IRC非常活跃,请参阅 http://laravel.io/irc 以获取快速简便的Web客户端。