답변:
확장하는 컨트롤러 에서이 작업을 시도하면로 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