Symfony重定向响应错误

时间:2018-04-12 12:18:59

标签: php symfony redirect

尝试重定向到另一种方法时出现此错误

  

类型错误:参数1传递给   Symfony \ Component \ HttpFoundation \ ResponseHeaderBag :: __ construct()必须   是类型数组,给定整数,调用   /proyect/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Response.php   在线199

但是我发送了一个空数组

private static final String BASE_URL = "http://xxxxx/";

任何帮助?

1 个答案:

答案 0 :(得分:2)

这是HttpFoundation\RedirectResponse班吗?你的实例看起来不对。

// Symfony\Component\HttpFoundation\RedirectResponse

public function __construct($url, $status = 302, $headers = array())
{
    ...
}

当需要数组时,您的第三个参数是整数。 RedirectResponse构造函数调用其父项Response构造函数,并执行此代码:

// Symfony\Component\HttpFoundation\Response

public function __construct($content = '', $status = 200, $headers = array())
{
    $this->headers = new ResponseHeaderBag($headers);
    ...
}

这是您的错误,当预期值是响应标头数组时,您使用的是整数(UrlGeneratorInterface::RELATIVE_PATH,等于2)。

正如@Cerad所回答的那样,正确的解决方案是使用redirectToRoute方法,但它会将您重定向到绝对路径:

return $this->redirectToRoute('persons', array());

或者,如果您仍想将RedirectResponse与相对路径一起使用:

$url = $this->generateUrl('persons', array(), UrlGeneratorInterface::RELATIVE_PATH);

return new RedirectResponse($url);