получить параметры публикации в zend framework с помощью метода "put"


Я получаю параметры get, используя это

$this->params()->fromQuery('KEY');

Я нашел два способа получить параметры записи

//first way
$this->params()->fromPost('KEY', null);

//second way
$this->getRequest()->getPost();

Оба эти метода работают в методе "POST", но теперь в методе "PUT", если я передаю значения в качестве параметров post.

Как я могу получить параметры публикации в методе "ПОМЕСТИТЬ"?

Author: keen, 2014-01-21

3 answers

Вам нужно прочитать тело запроса и проанализировать его, примерно так:

$putParams = array();
parse_str($this->getRequest()->getContent(), $putParams);

Это приведет к разбору всех параметров в массив $putParams, так что вы сможете получить к нему доступ, как если бы вы получили доступ к супер глобалам $_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;
}
 5
Author: Kasper Pedersen, 2014-01-21 15:14:10

Я думаю, что правильный способ сделать это - использовать 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");
 7
Author: npetrovski, 2014-01-30 08:44:01

У меня возникли проблемы с использованием данных PUT, отправленных из AngularJS, и я обнаружил, что лучшим способом было использовать пользовательский плагин 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;
 0
Author: bstoney, 2014-11-13 14:18:34