27
loading...
This website collects cookies to deliver better user experience
\{Vendor}\{Module}\Controller\{ControllerDirectory}\{ControllerName}
e implementar a interface \Magento\Framework\App\ActionInterface
, que obriga a classe a implementar o método execute()
.Caso esteja utilizando uma versão anterior a 2.4.0 do magento, a interface \Magento\Framework\App\ActionInterface
não é estará disponível, então deverá estender a classe \Magento\Framework\App\Action\Action
e ajustar o construtor com suas heranças.
<?php
namespace {Vendor}\{Module}\Controller\{ControllerDirectory};
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\Controller\Result\Json;
class {ControllerName} implements ActionInterface
{
protected JsonFactory $jsonResultFactory;
public function __construct(
JsonFactory $jsonResultFactory
) {
$this->jsonResultFactory = $jsonResultFactory;
}
public function execute(): Json
{
$data = [
'{param}' => '{value}',
'message' => __('{Message to return}'),
'error' => false
];
$jsonResult = $this->jsonResultFactory->create();
$jsonResult->setData($data);
return $jsonResult;
}
}
<?php
namespace {Vendor}\{Module}\Controller\{ControllerDirectory};
use Magento\Framework\Controller\Result\RawFactory;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\Controller\Result\Raw;
class {ControllerName} implements ActionInterface
{
protected RawFactory $rawResultFactory;
public function __construct(
RawFactory $rawResultFactory
) {
$this->rawResultFactory = $rawResultFactory;
}
public function execute(): Raw
{
$rawResult = $this->rawResultFactory->create();
$rawResult->setContents('{Custom message}');
return $rawResult;
}
}
<?php
namespace {Vendor}\{Module}\Controller\{ControllerDirectory};
use Magento\Framework\Controller\Result\RedirectFactory;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\Controller\Result\Redirect;
class {ControllerName} implements ActionInterface
{
protected RedirectFactory $redirectResultFactory;
public function __construct(
RedirectFactory $redirectResultFactory
) {
$this->redirectResultFactory = $redirectResultFactory;
}
public function execute(): Redirect
{
$redirectResult = $this->redirectResultFactory->create();
$redirectResult->setPath('{router_name}/{controller_directory}/{className}')
->setHttpResponseCode(301);
return $redirectResult;
}
}
<?php
namespace {Vendor}\{Module}\Controller\{ControllerDirectory};
use Magento\Framework\Controller\Result\ForwardFactory;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\Controller\Result\Forward;
class {ControllerName} implements ActionInterface
{
protected ForwardFactory $forwardResultFactory;
public function __construct(
ForwardFactory $forwardResultFactory
) {
$this->forwardResultFactory = $forwardResultFactory;
}
public function execute(): Forward
{
$forwardResult = $this->forwardResultFactory->create();
$forwardResult->setModule('{module_name}')
->setController('{controller_directory}')
->forward('{controller_name}')
->setParams(['{param}' => '{value}']);
return $forwardResult;
}
}
setModule()
seja definido o nome do diretório do módulo, o setController()
deve ser o nome do diretório dentro do diretório Controller do módulo e o forward()
é o nome da classe que irá ser renderizada através do controller forward.<?php
namespace {Vendor}\{Module}\Controller\{ControllerDirectory};
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\View\Result\Page;
class {ControllerName} implements ActionInterface
{
protected PageFactory $resultPageFactory;
public function __construct(
PageFactory $resultPageFactory
) {
$this->resultPageFactory = $resultPageFactory;
}
public function execute(): Page
{
return $this->resultPageFactory->create();
}
}
<?php
namespace {Vendor}\{Module}\Controller\{ControllerDirectory};
use Magento\Framework\View\Result\LayoutFactory;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\View\Result\Layout;
class {ControllerName} implements ActionInterface
{
protected LayoutFactory $resultLayoutFactory;
public function __construct(
LayoutFactory $resultLayoutFactory
) {
$this->resultLayoutFactory = $resultLayoutFactory;
}
public function execute(): Layout
{
return $this->resultLayoutFactory->create()
->getLayout()
->getBlock('{block.name}')
->toHtml();
}
}
\{Vendor}\{Module}\Controller\Adminhtml\{ControllerDirectory}\{ControllerName}
e estender a classe abstrata \Magento\Backend\App\AbstractAction
, que obriga a classe a implementar o método execute()
.<?php
namespace {Vendor}\{Module}\Controller\Adminhtml\{ControllerDirectory};
use Magento\Framework\View\Result\PageFactory;
use Magento\Backend\App\AbstractAction;
use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\Page;
class {ControllerName} extends AbstractAction
{
protected PageFactory $resultPageFactory;
public function __construct(
Context $context,
PageFactory $resultPageFactory
) {
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}
public function execute(): Page
{
return $this->resultPageFactory->create();
}
}
Valores entre chaves ({test}
) devem ser alterados na implementação do código.
php bin/magento setup:di:compile
- app/
- code/
- {Vendor}/
- {Module}/
- Controller/
- {ControllerDirectory}/
- {ControllerName}.php
- etc/
- module.xml
- registration.php
- composer.json