Надо со страницы продукта выполнить ajax-запрос. В интернете полно примеров как это сделтаь для более старых версий Magentо, есть варианты со своей кастомной страницы, пробую по аналогии, не получается - если через адресную строку браузера - все работает, если из javascript - нет. У контроллера срабатывает конструктор, но метод execute() не вызывается, сам ajax возвращается со статусом 302, после чего заново вызывается страница продукта
$.ajax({
url: baseUrl + 'module/ajax/fooaction',
type: "POST",
data: {},
showLoader: true,
cache: false,
crossDomain:true,
dataType: 'json',
success: function(response){
}
});
Кода контроллера примерно такой
<?php
namespace Vendor\Module\Controller\Ajax;
use Magento\Framework\App\Action\Context;
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Framework\App\Action\HttpGetActionInterface;
class FooAction implements HttpGetActionInterface
{
/**
* @var \Magento\Framework\App\Action\Contex
*/
private $context;
/**
* @var \Magento\Framework\Controller\Result\JsonFactory
*/
protected $resultJsonFactory;
/**
* @param \Magento\Framework\App\Action\Context $context
* @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
*/
public function __construct(Context $context, JsonFactory $resultJsonFactory)
{
$this->context = $context;
$this->resultJsonFactory = $resultJsonFactory;
}
/**
* @return json
*/
public function execute()
{
$params = $this->context->getRequest()->getParams();
$resultJson = $this->resultJsonFactory->create();
$resultJson->setData(['message' => 'Hello world', 'success' => true]);
return $resultJson;
}
}
Почему примерно, потому что это уже его 10-20 итерация, пробовал разные варианты, прямо сейчас такой:
...............
use Magento\Framework\App\Action\HttpPostActionInterface;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\App\Action\Action;
class FooAction extends Action implements HttpGetActionInterface, HttpPostActionInterface
{
/**
* @var \Magento\Framework\App\Action\Contex
*/
private $context;
/**
* @var \Magento\Framework\Controller\Result\JsonFactory
*/
protected $resultJsonFactory;
/**
* @param \Magento\Framework\App\Action\Context $context
* @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
*/
public function __construct(Context $context, JsonFactory $resultJsonFactory)
{
$this->context = $context;
$this->resultJsonFactory = $resultJsonFactory;
parent::__construct($context);
}
............................................................
routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="module" frontName="module">
<module name="Vendor_module" />
</route>
</router>
</config>
Что я делаю не так?