php – 如何使用Laravel处理不同路由的不同错误响应

我设置了Laravel路线,如下例所示:

Route::group(array('domain' => 'example.com'), function()
{
    Route::get('/', array('as' => 'root.index', 'uses' => 'RootController@Index'));
    [...]
});

Route::group(array('domain' => 'api.example.com'), function()
{
    Route::when('*', 'ApiFilter');
    Route::get('/', array('as' => 'api.index', 'uses' => 'ApiController@Index'));
    [...]
});

现在,当涉及响应有错误的请求(例如404,403,500等)时,Laravel使用App :: error及其相关方法提供了一个很好的解决方案.

我想以不同的方式响应错误,具体取决于请求是针对root还是api域.

我可以使用App :: error吗?

希望有道理.

谢谢

最佳答案 是的,你可以这样做.只需要从异常处理程序中的$exception对象获取请求对象,例如,如果你有这样的异常处理程序:

App::error(function(Exception $exception, $code)
{
    $request = $exception->getTrace()[0]['args'][0];
    $path = $request->path(); // will return path without domain, i.e. user/1
    // Take some action depending on the $path
});

现在,根据路径,您可以采取行动.您可以使用Request类的任何公共方法,例如if($request->是(‘admin / *’))或$request-> url()来获取带域的完整url.

点赞