gpt4 book ai didi

php - Laravel每个路由组的自定义ModelNotFoundException处理

转载 作者:行者123 更新时间:2023-12-03 08:55:47 24 4
gpt4 key购买 nike

我的Laravel应用程序中有两个路由组,一个用于API,一个用于网站本身。我在global.php中添加了以下代码,以处理API错误。

App::error(function(ModelNotFoundException $e)
{
return Response::json('', 404);
});

但这显然对我的普通网站没有影响,当 ModelNotFoundException出现时,我想在该网站上返回普通 View 。像这样:
App::error(function(ModelNotFoundException $e)
{
return Response::view('404.html', [], 404);
});

如何为不同的路由组设置不同的错误处理程序?

最佳答案

我认为您不应该在意网站的哪个部分引发了错误,而是以客户端要求的任何格式进行响应。通常,这是在请求的Accepts header 中设置的,可以通过以下方式在Laravel中进行访问:

if (Request::format() == 'json')
{
//
}

(以上摘自 documentation)

就您而言,这将使您的错误处理功能变为:
App::error(function(ModelNotFoundException $e)
{
if (Request::format() == 'json') {
return Response::json('', 404);
} else {
return Response::view('404.html', [], 404);
}
});

例如,如果您将非API AJAX请求添加到网站的主要部分(无论出于何种原因),而这可能会触发 ModelNotFoundException,那么这将自动为您服务。只要您的客户端发送适当的请求 header ,就可以了。

关于php - Laravel每个路由组的自定义ModelNotFoundException处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com