首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 4使用App::error with App::abort(404)

Laravel 4使用App::error with App::abort(404)
EN

Stack Overflow用户
提问于 2014-07-31 13:58:08
回答 3查看 8.7K关注 0票数 1

我正在尝试使用Laravel编写一个RESTful API。

我的路线是:

代码语言:javascript
复制
Route::resource('user', 'UserController');

一种方法是:

代码语言:javascript
复制
public function show($id)
{
    return User::findOrFail($id);
}

但是如果模型实例不存在,我会得到一个500个错误,而我相信我需要一个404错误。

因此,在start/global.php中,我有以下内容:

代码语言:javascript
复制
App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $exception)
{
    App::abort(404);
});

这给了我200段代码和异常处理程序中的消息错误。

我做错了什么吗?我希望没有输出和404代码。

谢谢,

迈克尔

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-31 15:12:29

为了完整起见,OP提到的行为(以及可以复制的行为)之前在Laravel的Github:https://github.com/laravel/framework/issues/1807上进行了讨论。据决定,它是按照设计的,不会被改变。

因此,从错误处理程序中返回JSON的Response::make("Not Found", 404);Response::json(null, 404);是目前唯一的解决方案,正如Michael Bearjaws已经提到的那样。

票数 8
EN

Stack Overflow用户

发布于 2014-07-31 14:10:55

您将希望使用Response::make("Not Found", 404);实际返回一个404头并显示"Not Found"消息。

您还可以使用视图呈现您自己的自定义404显示,如下所示

return Response::view('missing', array(), 404);

您还可以向应用程序中添加一个缺少的处理程序,以便它可以与您的代码一起工作。

代码语言:javascript
复制
App::missing(function($exception) { 
    return Response::view('missing', array(), 404); 
}); 
票数 3
EN

Stack Overflow用户

发布于 2014-07-31 14:16:00

app/config/local/app.php中的app/config/local/app.php配置值(如果您是本地的,应该是本地的)更改为false,以断言您实际上得到了一个404。

你也可以:

  • 使用phpdoc:@expectedException Symfony\Component\HttpKernel\Exception\NotFoundHttpException运行一个单元测试。推荐的
  • 推动您对开发的承诺,看看它是否真正有效。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25060801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档