我有一个中间表单处理器,需要从表单中获取POST
数据并对其进行操作,然后使用Zend_Controller_Request_Http
将其放回后超级全局中。另外,我需要使用POST
Zend_Controller_Request_Http
类型
使用$request->setParam()
会将其添加到帖子数据中还是仅添加参数哈希?
所以,总结一下:
- Set the Zend_Controller_Request_Http request object method as type POST
- Set the modified POST data to the new POST request data (I imagine its setting it into the superglobals but i want to use Zend Request Object instead).
感谢。
答案 0 :(得分:0)
嗯,不确定你在尝试什么但是我只想给你一些指示。
Zend Request对象正好是一个包含 Request 所有内容的对象。为了更加精确原始请求,在这方面,请求中的元素不应更改。在许多方面,它只是从常见来源获取值,并通过这个通用接口提供它们。例如,方法getParams()
会返回它在$_GET
或$_POST
中找到的值,即如果您的数据是通过GET
提交的,那么您永远不必担心或POST
方法。
这就是说,你不能通过Zend Request对象改变超全局,因为你永远不应该这样做。但是,您可以直接更改它们,然后Request对象将反映任何更改,因为它们不是永久存储的。
以下是您可以(但不应该)在控制器操作中执行操作的示例:
$params = $this->getRequest()->getParams();
$isPost = $this->getRequest()->isPost();
var_dump(compact('isPost','params'));
$_GET['something'] = 'new';
$_SERVER['REQUEST_METHOD'] = 'POST';
$params = $this->getRequest()->getParams();
$isPost = $this->getRequest()->isPost();
var_dump(compact('isPost','params'));
// here is result 1
array (size=2)
'isPost' => boolean false
'params' =>
array (size=3)
'controller' => string 'index' (length=5)
'action' => string 'index' (length=5)
'module' => string 'default' (length=7)
// here is result 2
array (size=2)
'isPost' => boolean true
'params' =>
array (size=4)
'controller' => string 'index' (length=5)
'action' => string 'index' (length=5)
'module' => string 'default' (length=7)
'something' => string 'new' (length=3)