Ich rufe eine HTTP-Anforderung für den Controller auf, erhalte Get-Parameter, kann jedoch keine Post-Parameter in Controller empfangen.
Grundsätzlich möchte ich Magento 2-APIs aufrufen und eine angepasste Antwort an die Anwendung senden. Dazu habe ich eine erstellt simple module
, die eine API und eine angepasste Antwort aufruft und eine Antwort an die Anwendung sendet.
Ich kann jedoch keine Post-Parameter von der Anfrage abrufen.
Hier sind einige meiner Dateien, die eine Vorstellung vom Problem geben können:
etc / webapi.xml
<?xml version="1.0"?>
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Webapi:etc/webapi.xsd">
<route url="/V1/api/token" method="POST">
<service class="Spaarg\Api\Api\apiInterface" method="token"/>
<resources>
<resource ref="anonymous"/>
</resources>
</route>
</routes>
Index.php
<?php
/**
*
* Copyright © 2015 Spaargcommerce. All rights reserved.
*/
namespace Spaarg\Api\Controller\Token;
class Index extends \Magento\Framework\App\Action\Action
{
/**
* @var \Magento\Framework\App\Cache\TypeListInterface
*/
protected $_cacheTypeList;
/**
* @var \Magento\Framework\App\Cache\StateInterface
*/
protected $_cacheState;
/**
* @var \Magento\Framework\App\Cache\Frontend\Pool
*/
protected $_cacheFrontendPool;
/**
* @var \Magento\Framework\View\Result\PageFactory
*/
protected $resultPageFactory;
/**
* @param Action\Context $context
* @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
* @param \Magento\Framework\App\Cache\StateInterface $cacheState
* @param \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool
* @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
*/
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
\Magento\Framework\App\Cache\StateInterface $cacheState,
\Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool,
\Magento\Framework\View\Result\PageFactory $resultPageFactory
) {
parent::__construct($context);
$this->_cacheTypeList = $cacheTypeList;
$this->_cacheState = $cacheState;
$this->_cacheFrontendPool = $cacheFrontendPool;
$this->resultPageFactory = $resultPageFactory;
}
/**
* Flush cache storage
*
*/
public function execute()
{
//$this->resultPage = $this->resultPageFactory->create();
//return $this->resultPage;
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance(); //instance of\Magento\Framework\App\ObjectManager
$storeManager = $_objectManager->get('Magento\Store\Model\StoreManagerInterface');
$currentStore = $storeManager->getStore();
$baseUrl = $currentStore->getBaseUrl();
$post = $this->getRequest()->getPost();
echo "<pre>";
print_r($post);
exit;
}
}
Es wird toll sein, wenn jemand helfen kann.
$postParam = $this->context->getRequest()->getParam('<param>');
Antworten:
Um Post-Daten im Controller abzurufen, müssen Sie in Ihrer Ausführungsfunktion Folgendes verwenden.
quelle
Wenn Sie Post-Daten vom Controller erhalten möchten,
Hier dein vollständiger Code,
Außerdem müssen Sie das Storemanager-Objekt in der __construct () -Funktion Ihrer PHP-Datei deklarieren, anstatt den direkten Objektmanager zu verwenden.
Ich habe Ihren Code wie folgt aktualisiert:
quelle
$post = $this->getRequest()->getPostValue();