我正在使用这个获取参数
$this->params()->fromQuery('KEY');
我找到了两种获取 POST 参数的方法
//first way
$this->params()->fromPost('KEY', null);
//second way
$this->getRequest()->getPost();
如果我将值作为发布参数传递,这两种方法都可以在“POST”方法中使用,但现在可以在“PUT”方法中使用。
如何在“PUT”方法中获取发布参数?
我正在使用这个获取参数
$this->params()->fromQuery('KEY');
我找到了两种获取 POST 参数的方法
//first way
$this->params()->fromPost('KEY', null);
//second way
$this->getRequest()->getPost();
如果我将值作为发布参数传递,这两种方法都可以在“POST”方法中使用,但现在可以在“PUT”方法中使用。
如何在“PUT”方法中获取发布参数?
我想这样做的正确方法是使用Zend_Controller_Plugin_PutHandler:
// you can put this code in your projects bootstrap
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Zend_Controller_Plugin_PutHandler());
然后你可以通过getParams()获取你的参数
foreach($this->getRequest()->getParams() as $key => $value) {
...
}
或者干脆
$this->getRequest()->getParam("myvar");
您需要阅读请求正文并对其进行解析,如下所示:
$putParams = array();
parse_str($this->getRequest()->getContent(), $putParams);
这会将所有参数解析到$putParams
-array 中,因此您可以像访问超级全局变量$_POST
或$_GET
. 例如:
// Get the parameter named 'id'
$id = $putParams['id'];
// Loop over all params
foreach($putParams as $key => $value) {
echo 'Put-param ' . $key . ' = ' . $value . PHP_EOL;
}
我在使用从 AngularJS 发送的 PUT 数据时遇到了问题,发现最好的方法是使用自定义 Zend 插件
class Web_Mvc_Plugin_JsonPutHandler extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request) {
if (!$request instanceof Zend_Controller_Request_Http) {
return;
}
if ($this->_request->isPut()) {
$putParams = json_decode($this->_request->getRawBody());
$request->setParam('data', $putParams);
}
}
}
然后可以getParams
作为 PHP 对象访问
$data = $this->getRequest()->getParam('data');
$id = $data->id;