Answers:
如果您从扩展控制器尝试此操作,Magento\Framework\App\Action\Action
则可以使用发出请求$this->getRequest()->getPost()
。
如果您在自定义类中,则需要将请求注入构造函数中。
<?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
没有方法getPost
,您确定吗?
嗨,您可以使用以下命令在模型,块和控制器中轻松获得它:
$this->getRequest()->getPost()
或Magento\Framework\App\RequestInterface
在自己的类中添加到构造函数参数:
<?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
没有方法getPost()
,您确定吗?
$this->getRequest()->getPost();
返回一个Zend\Stdlib\Parameters
对象。即使在核心中,Magento也会使用大量这样的调用,例如在Magento\Sales\Controller\Adminhtml\Order\AddComment
第31行有一个调用参数:$data = $this->getRequest()->getPost('history');
Magento\Catalog\Model\Product\Option\ReadHandler
只能在获取产品详细信息API时调用插件类吗?
这应该可以工作,只需对其进行测试。比较并查看缺少的内容。
<?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