Symfony2 响应
Symfony2 Response
我正在尝试为 Oauth 发送对 API 的响应。可悲的是,Symfony2 文档在解释 $response->headers->set(...);
的所有不同部分方面做得很差。
这是我的 OauthController 内部的响应部分:
$response = new Response();
$response->setStatusCode(200);
$response->headers->set('Location', 'url=' . $auth_url);
return $response->send();
控制器必须有一个 return
语句所以,我的代码看起来不错吗?或者我如何从正常的 php 复制 header('Location: ' . $auth_url);
?
谢谢!
既然要重定向,那么可以使用RedirectResponse
instead of regular Response
:
return new RedirectResponse($auth_url);
虽然@TomaszMadeyski 为您提供了更好的选择,但我想花点时间解释一下为什么您的代码不起作用(因为它很好)。
问题是一个控制器多return一个响应,但它不能发送这个响应。如果您查看 the front controller,您会发现它负责发送响应:
$response = $kernel->handle($request);
$response->send();
这背后的原因是 Symfony 允许您编辑控制器和 send()
之间的响应(例如添加一个很棒的工具栏或配置内容类型)。
如果您正在进行重定向,您的 HTTP response code 不应该是 300 范围内的代码之一以指示重定向吗?
此外,您可能想查看此 Symfony Cookbook article on redirecting。
我正在尝试为 Oauth 发送对 API 的响应。可悲的是,Symfony2 文档在解释 $response->headers->set(...);
的所有不同部分方面做得很差。
这是我的 OauthController 内部的响应部分:
$response = new Response();
$response->setStatusCode(200);
$response->headers->set('Location', 'url=' . $auth_url);
return $response->send();
控制器必须有一个 return
语句所以,我的代码看起来不错吗?或者我如何从正常的 php 复制 header('Location: ' . $auth_url);
?
谢谢!
既然要重定向,那么可以使用RedirectResponse
instead of regular Response
:
return new RedirectResponse($auth_url);
虽然@TomaszMadeyski 为您提供了更好的选择,但我想花点时间解释一下为什么您的代码不起作用(因为它很好)。
问题是一个控制器多return一个响应,但它不能发送这个响应。如果您查看 the front controller,您会发现它负责发送响应:
$response = $kernel->handle($request);
$response->send();
这背后的原因是 Symfony 允许您编辑控制器和 send()
之间的响应(例如添加一个很棒的工具栏或配置内容类型)。
如果您正在进行重定向,您的 HTTP response code 不应该是 300 范围内的代码之一以指示重定向吗?
此外,您可能想查看此 Symfony Cookbook article on redirecting。