Dans Magento 2, comment recevoir un tableau de requêtes? $_POST
et $_GET
aussi comme nous l'avons fait dans Magento 1:
Mage::app()->getRequest()->getPost()
Dans Magento 2, comment recevoir un tableau de requêtes? $_POST
et $_GET
aussi comme nous l'avons fait dans Magento 1:
Mage::app()->getRequest()->getPost()
Réponses:
Si vous essayez cela depuis un contrôleur qui étend, Magento\Framework\App\Action\Action
vous pouvez obtenir la demande avec $this->getRequest()->getPost()
.
Si vous êtes dans une classe personnalisée, vous devez injecter la demande dans le constructeur.
<?php
namespace Namespace\Module\Something;
class ClassName
{
protected $request;
public function __construct(
\Magento\Framework\App\RequestInterface $request
....//rest of parameters here
) {
$this->request = $request;
...//rest of constructor here
}
public function getPost()
{
return $this->request->getPostValue();//in Magento 2.*
}
}
\Magento\Framework\App\Request\Http
n'a pas de méthode getPost
, êtes-vous sûr de cela?
Bonjour, vous pouvez l’obtenir facilement dans les modèles, les blocs et les contrôleurs en utilisant:
$this->getRequest()->getPost()
Ou ajoutez Magento\Framework\App\RequestInterface
aux paramètres du constructeur dans vos propres classes:
<?php
namespace MyModuleNameSpace\MyModule\Block
use Magento\Framework\App\RequestInterface;
class MyClass
{
/**
* Request instance
*
* @var \Magento\Framework\App\RequestInterface
*/
protected $request;
/**
* @param RequestInterface $request
*/
public function __construct(RequestInterface $request)
{
$this->request = $request;
}
public function getMyPostParams()
{
$postData = $this->request->getPost();
}
}
\Magento\Framework\App\RequestInterface
n'a pas de méthode getPost()
, êtes-vous sûr de cela?
$this->getRequest()->getPost();
retourne un Zend\Stdlib\Parameters
objet pour moi. Même en noyau, Magento utilise beaucoup d'appels comme celui-ci, avec un paramètre comme par exemple dans Magento\Sales\Controller\Adminhtml\Order\AddComment
il y a un appel sur la ligne 31:$data = $this->getRequest()->getPost('history');
Magento\Catalog\Model\Product\Option\ReadHandler
classe de plug - in uniquement pour obtenir l'API de détails sur le produit?
Cela devrait fonctionner, juste le tester. Comparez et voyez ce qui manque.
<?php
namespace MyModuleNameSpace\MyModule\Block
use Magento\Framework\App\RequestInterface;
class MyClass extends \Magento\Framework\View\Element\Template
{
/**
* Request instance
*
* @var \Magento\Framework\App\RequestInterface
*/
protected $request;
/**
* @param RequestInterface $request
*/
public function __construct(
RequestInterface $request,
\Magento\Framework\View\Element\Template\Context $context,
array $data = [])
{
$this->request = $request;
parent::__construct($context, $data);
}
public function getMyPostParams()
{
$postData = $this->request->getPost();
}
}
$this->_request