Magento 2

Como criar um Módulo no Magento 2

Tutorial ensinando a como criar um Módulo no Magento 2, passo a passo de como criar uma estrutura básica de um módulo para que você possa complementar com Controllers, Rewrites, Blocks.

Este tutorial é muito importante para você que está começando.

Irei utilizar esta estrutura como base para diversos tutoriais que estarei disponibilizando no site sobre desenvolvimento no Magento 2.

Nunca faça o desenvolvimento de um módulo em um ambiente de produção. Vejo muitos desenvolvedores fazendo isso para entregar o código o quanto antes e essa pratica coloca a loja em um estado instável, gerando diversos erros para os usuários.

Magento 2 utiliza arquitetura MVC:

Model-view-controller (MVC), em português modelo-visão-controlador, é um padrão de arquitetura de software (não confundir com um design pattern) que separa a representação da informação da interação do usuário com ele. O modelo (model) consiste nos dados da aplicação, regras de negócios, lógica e funções.

Conheça o básico sobre o Magento e PHP

Componentes Magento

O aplicativo Magento é composto de Módulos, Temas e Pacotes de Linguagem:

Os módulos interagem com outras partes do aplicativo para realizar uma função de negócios específica ou fornecer um recurso. Um módulo pode conter uma interface de usuário para exibir informações ou interagir com o usuário. Ele também pode conter interfaces de aplicativos que outro módulo Magento ou trecho de código pode chamar.

Os temas fornecem um toque personalizado para cada instalação do Magento, alterando a aparência da vitrine ou do administrador. Dois temas já estão disponíveis na estrutura de código padrão do Magento 2.x: Tema em branco e tema Luma. Consulte esses temas padrão ao criar temas personalizados.

Os pacotes de idiomas auxiliam na internacionalização (i18n) e na localização fornecendo traduções para strings exibidas na vitrine e no Admin.

Primeiro passo para criar o módulo no Magento 2

Primeiro passo..

Vamos criar os diretórios: app/code/Rogertakemiya/Test

A primeira parte do nome deverá ser a empresa/desenvolvedor que criou o módulo, no meu caso é Rogertakemiya (sem espaços!).

Já a segunda parte é o nome do módulo, é importante que o nome facilite a identificação da função do módulo.

Atenção: Caso você altere os nomes Rogertakemiya (vendorname) e Test (modulename), altere também as referencias desses diretórios nos próximos arquivos que iremos criar.

Segundo: module.xml

No diretório do nosso plugin Rogertakemiya/Test crie a pasta e arquivo /etc/module.xml

Conteúdo do module.xml:

<?xml version="1.0"?>
  <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
  <module name="Rogertakemiya_Test" setup_version="0.0.1"/>
</config>

Terceiro: registration.php

Agora vamos criar o arquivo registration.php no diretório:

app/code/Rogertakemiya/Test/registration.php

Conteúdo:

<?php
  \Magento\Framework\Component\ComponentRegistrar::register(
      \Magento\Framework\Component\ComponentRegistrar::MODULE,
      'Rogertakemiya_Test',
      __DIR__
  );

Quarto: habilitando o módulo

Primeiro execute o comando:

php bin/magento module:status

Você verá que o módulo esta desativado.

Agora para ativa-lo, execute:

php bin/magento module:enable Rogertakemiya_Test

Na sequência, execute:

bin/magento setup:upgrade

Quinto: Criando um Controller

Primeiro teremos que criar o arquivo routes.xml no diretório frontend em etc.

Rogertakemiya/Test/etc/frontend/routes.xml

Conteúdo:

<?xml version="1.0"?>
  <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
    <router id="standard">
        <route id="rogertakemiya" frontName="rogertakemiya">
            <module name="Rogertakemiya_Test" />
        </route>
    </router>
  </config>

Agora vamos criar o Controller, crie o arquivo Test.php dentro do diretório Controller/Test

Rogertakemiya/Test/Controller/Test/Test.php

Conteúdo do arquivo:

  <?php
  namespace Rogertakemiya\Test\Controller\Hello;
 
  class World extends \Magento\Framework\App\Action\Action
  {
    public function __construct(
        \Magento\Framework\App\Action\Context $context)
    {
        return parent::__construct($context);
    }
     
    public function execute()
    {
        echo 'Funcionou';
        exit;
    } 
  }

Para testar, acesse: www.sualoja.com/rogertakemiya/test/test

Conclusão de como criar um Módulo no Magento 2

Desenvolver na plataforma Magento não é uma tarefa fácil, consulte sempre a documentação oficial para gerar códigos de qualidade, evitando conflitos e bugs na loja.

Documentação Oficial: http://devdocs.magento.com/

Post Recentes

WordPress não aparece no Google: noindex esquecido e robots.txt virtual

Site novo há semanas e nenhuma página indexada? Confira a caixinha de visibilidade em Leitura, o noindex no HTML e…

18 horas atrás

array_map perde as chaves do array no PHP: como manter o índice

O retorno do array_map voltou com índice 0, 1, 2 e o código que dependia da chave quebrou. Entenda quando…

1 dia atrás

Backup do Magento 2 com mysqldump: dump leve sem as tabelas de log

Dump de 12 GB que demora horas porque arrasta report_event e cron_schedule. Faça o backup em duas passadas, guarde só…

2 dias atrás

Preference do di.xml não aplica no Magento 2: o que checar antes

Escreveu a preference e o Magento 2 continua usando a classe original? Confira a área do di.xml, o generated/code e…

3 dias atrás

Filtro por atributo do WooCommerce vazio: global x personalizado

Cadastrou Cor direto na aba Atributos do produto e o filtro por atributo vem vazio. Veja como identificar o tipo,…

3 dias atrás

wp db query: rodar SQL no WordPress pelo WP-CLI sem phpMyAdmin

Precisa de um SELECT no banco do cliente e só tem SSH? O wp db query pega a senha do…

4 dias atrás