In Magento 2, wie Anforderungsarray empfangen? $_POST
und $_GET
auch wie in Magento 1:
Mage::app()->getRequest()->getPost()
In Magento 2, wie Anforderungsarray empfangen? $_POST
und $_GET
auch wie in Magento 1:
Mage::app()->getRequest()->getPost()
Antworten:
Wenn Sie dies von einem Controller versuchen, der erweitert wird Magento\Framework\App\Action\Action
, können Sie die Anforderung mit abrufen $this->getRequest()->getPost()
.
Wenn Sie sich in einer benutzerdefinierten Klasse befinden, müssen Sie die Anforderung in den Konstruktor einfügen.
<?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
hat keine Methode getPost
. Sind Sie sich da sicher?
Hallo, Sie können es leicht in Modellen, Blöcken und Steuerungen erhalten, indem Sie verwenden:
$this->getRequest()->getPost()
Oder ergänzen Sie Magento\Framework\App\RequestInterface
die Konstruktorparameter in Ihren eigenen Klassen:
<?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
hat keine Methode getPost()
, bist du dir da sicher?
$this->getRequest()->getPost();
gibt ein Zend\Stdlib\Parameters
Objekt für mich zurück. Selbst im Kern verwendet Magento viele Aufrufe wie diese, mit einem Parameter wie zum Beispiel in Magento\Sales\Controller\Adminhtml\Order\AddComment
Zeile 31 gibt es einen Aufruf:$data = $this->getRequest()->getPost('history');
Magento\Catalog\Model\Product\Option\ReadHandler
Plugin-Klasse aufzurufen , um nur in Produktdetails API zu bekommen?
Dies sollte funktionieren, testen Sie es einfach. Vergleichen Sie und sehen Sie, was fehlt.
<?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