重定向至“包含开机自检数据(PHP/Zend)的新页面”重定向至

我正在尝试弄清楚如何重定向到新页面(不同的应用程序,控制器,操作)并维护当前的POST数据。

我的应用正在验证 POST 数据,如果满足特定条件,我想重定向到其他位置,但请确保 POST 数据作为 POST 数据传递到该新页面。下面是一个粗略的示例:

POST /app1/example HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
    var1=foo&var2=bar

在我的(Zend_Controller_Action)中,我检查是否,如果确实如此,我想使用相同的POST数据将(302)重定向到/app2/example。也许是这样的?exampleActionvar1 == foo

HTTP/1.x 302 Found
Location: /app2/example
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
    var1=foo&var2=bar

我可以看到如何使用Zend_Http_Client创建新的HTTP请求,但我不想简单地请求页面并显示内容。无论如何,我应该仍然希望使用Zend_Http_Client吗?目前,我正在玩这样的东西:

$this->getResponse()->setRedirect('/app2/example/', 302);
$this->getResponse()->setBody(http_build_query($this->_request->getPost()));

我确信我想做的事情可以通过一些诡计和恶魔吹捧的方式实现,但这绝对是在暗示我。任何帮助是值得赞赏的。

- rk


答案 1

为什么不将请求从控制器转发到另一个控制器,而不是将浏览器重定向到新位置?

return $this->_forward("action", "controller", "module");

答案 2

IMO 你不能用 POST 做重定向。查看 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3

如前所述,您可以在会话中保存POST数据。


推荐