我是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);
}
我做错了什么?
答案 0 :(得分:7)
您可以使用提到的here。您将需要返回类似这样的响应:
public function index()
{
$data=array();
return response()->view('layouts.default', $data)->setStatusCode(404);
} // ^^^^^^^^^^^^^^^^^^^
注意setStatusCode($integer)
方法。
您可以在返回视图时设置其他标头以指定其他数据,如documentation所述:
将标题附加到响应
请记住大多数响应方法 是可链接的,可以流畅地构建响应 实例。例如,您可以使用header方法添加系列 在将响应发送回用户之前的标题:
return response($content) ->header('Content-Type', $type) ->header('X-Header-One', 'Header Value') ->header('X-Header-Two', 'Header Value');