Magento 2 Curso Controller

Avançando um pouco mais neste minicurso de desenvolvimento de módulos para Magento 2, nós veremos como trabalhar com Controller.

Controllers são rotas, por assim dizer, que implementaremos no nosso módulo.

Routes.xml

Como você já sabe, o diretório etc/ é o local onde armazenamos as configurações do nosso módulo. E nele poderemos definir as configurações para o admin e para o frontend do nosso módulo. Então, nele nós definiremos a rota do nosso módulo. Como precisamos de uma rota no frontend da loja, crie o seguinte arquivo etc/frontend/routes.xml, conforme imagem:

Magento 2 Curso Controller - Declarando rotas no frontend

E adicione o script:

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="newsletter" frontName="newsletter">
            <module name="AbraaoMarques_NewsletterModal"/>
        </route>
    </router>
</config>

Como estamos trabalhando com rotas no nível frontend, usamos o standard no id da tag <router> <router id="standard">

Na tag <route> nós temos o nosso id e frontName <route id="newsletter" frontName="newsletter">. O frontName é a rota base do nosso módulo. Todas as rotas do nosso módulo será iniciado pelo ele.

Controller

Crie o arquivo: Controller/Moda/Index.php, conforme abaixo:

Magento 2 Minicurso de Desenvolvimento de Módulo – Trabalhando com Controller

Todos os controllers, rotas, do seu módulo devem ser criados a partir do diretório Controller.

Adicione o script:

<?php

namespace AbraaoMarques\NewsletterModal\Controller\Modal;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\App\ResponseInterface;

class Index extends Action
{

    public function __construct(
        Context $context
    )
    {
        parent::__construct($context);
    }

    /**
     * Execute action based on request and return result
     *
     * Note: Request will be added as operation argument in future
     *
     * @return \Magento\Framework\Controller\ResultInterface|ResponseInterface
     * @throws \Magento\Framework\Exception\NotFoundException
     */
    public function execute()
    {
        var_dump("meu primeiro controller");
    }
}

É obrigatório que você estenda a classe Magento\Framework\App\Action\Action na sua classe Controller para que ele funcione corretamente.

    public function execute()
    {
        var_dump("meu primeiro controller");
    }

O método acima é o responsável pela execução do nosso controller.

Ok, mas como acesso a minha rota? O Magento 2 trabalha com a seguinte estrutura para as rotas: frontName/diretorio-no-controller/class-de-controller busca o método public function execute() dessa estrutura. Em nosso caso: newsletter/modal/index

Magento 2 Curso Controller - Testando nosso primeiro controller

E aí, ficou alguma dúvida? Assista ao vídeo tutorial no início desse artigo para maiores explicações!

Ainda com dúvidas? Posta aí!!!

Aquele abraço.

4 respostas a “Magento 2 Curso Controller”

  1. Muito bom! Fácil aprendizagem! Meus parabéns! Hoje em dia não acha sites ou cursos que ensinam assim! Muito obrigado! Continue assim!!!

  2. Tem como disponibilizar um link para baixar esse módulo? Para fins de erros, pois aqui no meu não está abrindo a url da rota. Obrigado!

Deixe um comentário

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