Magento 2 Controller Redirect

No último artigo, vimos como usar o Response Type Raw para retorna uma string através de um Controller. Dando continuidade aos nossos estudos de Response Type, hoje veremos Magento 2 Controller Redirect.

Magento 2 Controller Redirect

O Redirect é uma maneira de usarmos uma Rota A para redirecionar o usuário para a Rota B.

Voltando ao nosso módulo, criamos um novo Controller:

<?php

namespace ForMage\Learning\Controller\Page;

class NewRoute extends \Magento\Framework\App\Action\Action
{
    public function execute()
    {
        echo "MY NEW ROUTE";
    }
}

Ao acessar a nossa rota newroute, temos o resultado:

MY NEW ROUTE

Bom, o que teremos agora é modificar a rota em que já estávamos trabalhando nela, para que ao acessá-la, a mesma nos redireciona para esta nova rota.

Então, abrindo este Controller temos 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;
use Magento\Framework\Controller\Result\Raw;
use Magento\Framework\Controller\Result\RedirectFactory;

class ResponseType extends \Magento\Framework\App\Action\Action
{
    protected $pageFactory;
    protected $jsonFactory;
    protected $raw;
    protected $redirectFactory;

    public function __construct(
        Context $context,
        PageFactory $page,
        JsonFactory $jsonFactory,
        Raw $raw,
        RedirectFactory $redirectFactory
    ) {
        parent::__construct($context);
        $this->pageFactory = $page;
        $this->jsonFactory = $jsonFactory;
        $this->raw = $raw;
        $this->redirectFactory = $redirectFactory;
    }

    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'
//        ]]);
//        return $this->raw->setContents('That is my raw content');
        $result = $this->redirectFactory->create();
        return $result->setPath('learning/page/newroute');
    }
}

Fizemos um use Magento\Framework\Controller\Result\RedirectFactory;. Modificamos o nosso construtor adicionando o RedirectFactory:

public function __construct(
    Context $context,
    PageFactory $page,
    JsonFactory $jsonFactory,
    Raw $raw,
    RedirectFactory $redirectFactory
) {
    parent::__construct($context);
    $this->pageFactory = $page;
    $this->jsonFactory = $jsonFactory;
    $this->raw = $raw;
    $this->redirectFactory = $redirectFactory;
}

E modificamos o método execute() em:

    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'
//        ]]);
//        return $this->raw->setContents('That is my raw content');
        $result = $this->redirectFactory->create();
        return $result->setPath('learning/page/newroute');
    }

Note que criamos a nossa factory a partir de $this->redirectFactory->create();. Em $result->setPath('learning/page/newroute'); nós informamos a rota completa do novo Controller de redirecionamento.

Assim, ao acessar a nossa rota responsetype, somos redirecionados para a rota newroute, com a mudança de URL no browser e exibimos o conteúdo:

4Mage - Magento 2 Controller - Trabalhando com Redirect

De maneira bem simples e rápida, criamos um Redirect no Magento 2.

Para se aprofundar nos seus estudos sobre Controller no Magento 2

Dúvidas? Posta aí!

Um abraço!

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *