【问题标题】:PHP Symfony2 Redirect with POST data带有 POST 数据的 PHP Symfony2 重定向
【发布时间】:2015-05-18 08:33:33
【问题描述】:

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

我的项目在 Symfony 2.0 上

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

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

但我不能以这种方式发送 POST 数据。

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

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

但这不会改变地址栏中的 URL。

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

【问题讨论】:

    标签: php symfony redirect post


    【解决方案1】:

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

    1. 使用 GET 参数重定向。

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

    2. 将 forward 与参数一起使用。

      $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);
    

    重定向后:

    $session = $this->getRequest()->getSession();
    $data = $session->get('data');
    

    【讨论】:

    • 谢谢。我最终使用会话来保存和检索数据。
    • 在 SF 中有一个专用的方法来访问 $_POST 参数,而不是直接访问 PHP 变量:$data = $request->request->all()。来自 symfony.com/doc/current/components/http_foundation/introduction.html “HttpFoundation 组件用面向对象层替换了这些默认的 PHP 全局变量和函数”。此外 $this->getRequest() 已被弃用。
    【解决方案2】:

    设置会话:

    $session->set('data' , $_POST);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 2014-05-07
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多