如何将请求方法设置为post并将变量添加到zend请求对象中的post数组

时间:2015-07-29 14:27:35

标签: php post zend-framework

我有一个中间表单处理器,需要从表单中获取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).

感谢。

1 个答案:

答案 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)