Symfony2:将任意POST数据从一个页面发送到下一个

时间:2015-07-18 20:36:44

标签: php symfony post controller

我的控制器刚刚处理完表单,

if ($form->isValid())
{
  // Persist my data.
  // ...

  // Now move on to the next page.
  return $this->redirectToRoute('page2');
}

但是我想使用POST将变量传递给该页面。即类似于:

$this->redirectToRoute('page2', array('state' => 'wonderful'));

这显然会将其作为GET参数传递。人们建议使用redirect 307s and forwarding,但他们只是转发当前的请求。我需要做的是用我的任意消息创建一个新的请求。我怎么能做到这一点?

4 个答案:

答案 0 :(得分:0)

不确定这是否有效,但值得一试:

icons

答案 1 :(得分:0)

将您的重定向委托给客户端,然后发布帖子请求。

你的控制器:

if ($form->isValid())
{
  return $this->render('redirect.html.twig');
}

redirect.html.twig:

<html>
<body onload="document.frm1.submit()">
    <form action="{{path('page2')}}" method="POST" name="frm1">
        <input type="hidden" name="state" value="wonderful" />
    </form>
</body>
</html>

顺便说一句,您可以将后置参数绑定到Symfony表单,然后在模板中进行渲染。

答案 2 :(得分:0)

您可以使用session

在初始控制器中

$this->get('session')->set('request',$request)

在其他

$request=$this->get('session')->get('request')

或者您可以使用cookies

$response->headers->setCookie(new Cookie('request', $request));

- &GT;

$response->headers->getCookie('request'));

答案 3 :(得分:0)

您无法直接模拟POST 如果您必须使用POST发送,则必须使用:

检查或询问您的表格 我发现必须在项目的另一条路线中发送POST数据很奇怪。