Symfony2响应

时间:2016-01-25 19:27:42

标签: php symfony 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);

谢谢!

3 个答案:

答案 0 :(得分:6)

由于您要进行重定向,因此您可以使用RedirectResponse代替常规Response

return new RedirectResponse($auth_url);

答案 1 :(得分:0)

虽然@TomaszMadeyski在为您提供更好的替代方案方面做得很好,但我想花一点时间解释为什么您的代码不起作用(因为它很好)。

问题是控制器很多都会返回响应,但它不能发送响应。如果您查看the front controller,您会发现它会负责发送回复:

$response = $kernel->handle($request);
$response->send();

背后的原因是Symfony允许您编辑控制器和send()之间的响应(例如,添加一个很棒的工具栏或配置内容类型)。

答案 2 :(得分:0)

如果您正在进行重定向,那么您的HTTP response code不应该是300范围内的代码之一,以表示重定向吗?

另外,您可能想要查看此Symfony Cookbook article on redirecting