PHP Symfony2使用POST数据重定向

sag*_*lra 5 php post redirect symfony

我正在我的电子商务应用程序中实现支付网关.成功/失败时,它会返回给定URL的JSON响应(成功和失败).根据状态,我必须使用POST数据将其重定向到成功和失败URL.出于分析原因,我需要两个不同的URL(成功和失败).

我的项目是在Symfony 2.0上

现在我知道Symfony有办法重定向.

$this->redirect($this->generateUrl('pg_success'));
Run Code Online (Sandbox Code Playgroud)

但我无法以这种方式发送POST数据.

此外,还有一种方法可以使用forward和send参数调用另一个操作

$this->forward('DemoBundle:Checkout:pgsuccess', $_POST);
Run Code Online (Sandbox Code Playgroud)

但这不会更改地址栏中的URL.

有没有办法执行URL重定向,我可以通过它发送参数?或者类似的解决方案?

Mik*_*lov 5

使用POST数据无法重定向.您有以下选项来解决您的问题:

  1. 使用GET参数重定向.

    $ this-> redirect($ this-> generateUrl('pg_success',$ _POST));

  2. 使用参数向前使用.

    $ this-> forward('DemoBundle:Checkout:pgsuccess',$ _POST);

http://symfony.com/doc/current/book/controller.html#forwarding-to-another-controller

  1. 只需使用会话将数据传递到重定向目标.

重定向之前:

$session = $this->getRequest()->getSession();
$session->set('data' => $_POST);
Run Code Online (Sandbox Code Playgroud)

重定向后:

$session = $this->getRequest()->getSession();
$data = $session->get('data');
Run Code Online (Sandbox Code Playgroud)

  • 在 SF 中有一种访问 $_POST 参数的专用方法,应该使用它而不是直接访问 PHP 变量:$data = $request->request->all()。来自 symfony.com/doc/current/components/http_foundation/introduction.html “**HttpFoundation 组件用面向对象的层**替换了这些默认的 PHP 全局变量和函数**”。除了 $this->getRequest() 已弃用。 (2认同)