No artigo anterior, vimos como trabalhar com Page Factory no Response Type do Controller. Neste artigo, veremos como utilizar Magento 2 Controller Json Factory para retornar um conteúdo no formato json em nosso controller.
Magento 2 Controller Json Factory
Quando precisamos trabalhar com um Controller que nos responda um conteúdo, geralmente trabalharmos com Json. Json é muito útil, por exemplo, quando vamos consumir uma rota POST e precisamos pegar o resultado do nosso POST.
Voltando ao nosso Controller, fizemos a seguinte modificação:
<?php namespace ForMage\Learning\Controller\Page; use Magento\Framework\App\Action\Context; use Magento\Framework\View\Result\PageFactory; use Magento\Framework\Controller\Result\JsonFactory; class ResponseType extends \Magento\Framework\App\Action\Action { protected $pageFactory; protected $jsonFactory; public function __construct( Context $context, PageFactory $page, JsonFactory $jsonFactory ) { parent::__construct($context); $this->pageFactory = $page; $this->jsonFactory = $jsonFactory; } public function execute() { // return $this->pageFactory->create(); return $this->jsonFactory->create()->setData(['name' => 'Abraão', 'city' => 'Rio de Janeiro', 'customer' => [ 'name' => 'customer name', 'email' => 'customer email' ]]); } }
Como visto no código acima, nós adicionamos o use Magento\Framework\Controller\Result\JsonFactory;
em nosso Controller e alteramos o nosso construtor. Em nosso método public function execute()
temos o seguinte:
public function execute() { // return $this->pageFactory->create(); return $this->jsonFactory->create()->setData(['name' => 'Abraão', 'city' => 'Rio de Janeiro', 'customer' => [ 'name' => 'customer name', 'email' => 'customer email' ]]); }
Com isso, ao acessarmos a nossa rota, temos o seguinte resultado:
De maneira bem simples, você pode implementar o retorno de um conteúdo no formato Json em seu Controller!
Para se aprofundar nos seus estudos sobre Controller no Magento 2