Laravel中的错误处理,如何在路由上指定?

时间:2013-09-19 15:02:59

标签: php error-handling routing laravel laravel-4

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

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

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

这可行,但对于可能抛出的每种异常类型,它看起来有点笨拙吗?文档似乎没有任何东西,但是如果有什么可能有用的话我会徘徊,所以可以为set route通配符应用错误?类似的东西:

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

2 个答案:

答案 0 :(得分:2)

您可以添加App :: error过滤器并在该过滤器中执行Route检查,然后在json中发送响应。这样一个简单的例子:

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

答案 1 :(得分:1)

您可以使用路由组http://laravel.com/docs/routing#route-groups并对组应用过滤器,或者如果您在前缀路由组http://four.laravel.com/docs/routing#route-prefixing中声明它,则可能会使用App :: error方法。我不是百分之百地判断这两种方法是否有效,但如果你没有运气,Laravel IRC非常活跃,请参阅http://laravel.io/irc以获得快速简便的网络客户端。