【发布时间】:2018-02-20 02:36:25
【问题描述】:
我是 laravel 的新手,并且成功地将用户从控制器引导到适当的视图,但在某些情况下,我想设置一个 http 状态代码,但无论我做什么,它总是返回一个 200 的响应代码发送。
这是我的测试控制器功能的代码:
public function index()
{
$data=array();
return response()->view('layouts.default', $data, 201);
}
如果我在路由中使用相同的代码,它将返回正确的 http 状态代码,正如我在命令行中使用 curl -I 调用页面时看到的那样。
curl -I http://localhost/
是否有它在控制器中不起作用但在路由调用中起作用的原因?
我确定我只是作为新手误解了一些东西,但即使是以下代码也适用于路由而不是控制器:
public function index()
{
abort(404);
}
我做错了什么?
【问题讨论】:
-
我不想重定向,我想加载一个特定的视图,但让它响应一个特定的 http_response_code。
-
我不想做重定向。我只想设置状态码。
-
我已经更新了我的答案。
-
复制你的代码,给了我 201。清理 Laravel 5.6 安装。您确定您的路线指向正确的控制器和方法吗? laravel.com/docs/5.6/responses#view-responses.
-
是的。我很乐观。您是否从控制器中尝试过?还是路线?它可以从路由正常工作,但不能从控制器(尽管控制器将返回正确的视图,只是没有正确的 http 响应/状态代码。我还使用全新安装的 laravel 5.6 并使用我的第一个控制器。 (OS X 10.13.1 和 PHP 7.1.7)
标签: php laravel laravel-5 controller http-status-codes