Como criar um módulo personalizado no Magento 2
Publicados: 2018-03-19O que é o Módulo Magento?
Como você sabe, o módulo é um diretório que contém blocos , controllers , models , helper , etc – que estão relacionados a um recurso de negócio específico.
De acordo com o compromisso do Magento com a modularidade ideal, um módulo encapsula um recurso e tem dependências mínimas em outros módulos.
Os módulos fornecem recursos de negócios, com lógica de suporte, enquanto os temas influenciam fortemente a experiência do usuário e a aparência da vitrine.
Finalidade do módulo
A finalidade de cada módulo é fornecer recursos específicos do produto, implementando novas funcionalidades ou estendendo a funcionalidade de outros módulos. Cada módulo é projetado para funcionar de forma independente, portanto, a inclusão ou exclusão de um módulo específico normalmente não afeta a funcionalidade de outros módulos.
No Magento 2, os módulos estarão ativos no diretório app/code de uma instalação do Magento, com este formato: app/code/<Vendor>/<ModuleName>. Agora vamos seguir estes passos para criar um módulo simples que funcione no Magento 2.
Criar um módulo Magento 2
- Crie a pasta do módulo.
- Crie o arquivo etc/module.xml.
- Crie o arquivo registration.php.
- Execute o script bin/magento setup:upgrade para instalar o novo módulo.
- Verifique se o módulo está funcionando.
Vamos passar por cada uma dessas etapas em detalhes.
Etapa 1: criar a pasta do módulo
- Existem dois locais possíveis para módulos no Magento 2: a pasta app/code e a pasta vendor
Dependendo de como o Magento 2 foi instalado, os módulos principais podem estar localizados nas pastas vendor/magento/magento-* (para instalação do composer) ou na pasta app/code/Magento/ (para clonagem do github).
- Qual desses locais você deve escolher para seu novo módulo?
Se você criar um módulo para um projeto específico, é melhor escolher a pasta app/code e confirmar no repositório do projeto.
Se você construir uma extensão para ser reutilizada, é melhor usar o composer para criá-la e colocar seu módulo na pasta vendor/<YOUR_VENDOR>/module-something.
Cada nome de módulo no Magento 2 consiste em duas partes – o fornecedor e o próprio módulo, então você precisa definir os nomes do fornecedor e do módulo. Para este exemplo, vamos nomear o fornecedor “Learning” e o módulo “FirstUnit”.
Vamos criar a pasta app/code/Learning e dentro desta pasta coloque outra pasta: FirstUnit. Se você estiver usando a linha de comando, o código seria:
- cd para a pasta raiz
- aplicativo/código/aprendizagem mkdir
- mkdirapp/code/Learning/FirstUnit
Certifique-se de ter permissão para criar arquivos e pastas em sua instalação.
Etapa 2: crie o arquivo etc/module.xml
Este arquivo é necessário para que o módulo exista e contém as seguintes informações:
- Nome do módulo
- Versão do módulo
- Dependências
O nome do módulo é definido pelas pastas que acabamos de criar, pois no Magento 2, os nomes das classes devem seguir a estrutura de pastas. Como criamos as pastas Learning/FirstUnit, o nome do nosso módulo será Learning_FirstUnit e todas as classes que pertencem a este módulo começarão com Learning\FirstUnit – por exemplo: Learning\FirstUnit\Observer\Test.
A versão do módulo indica a versão atual do esquema e dos dados do banco de dados e é usada na atualização. Por exemplo, suponha que você decida modificar o esquema de uma tabela em seu módulo. Como você pode ter certeza de que essa mudança acontecerá em todas as instâncias em que o código for implantado? Alterar o banco de dados por consultas SQL diretas não funcionará. Em vez disso, o Magento 2 possui scripts de instalação e atualização em cada módulo (opcionalmente). Esses scripts contêm comandos para modificar o esquema ou os dados do banco de dados. Para rastrear a execução de um script ou não, o Magento 2 usa versões de módulo. Toda vez que você implementa uma nova mudança de banco de dados, você implementa uma nova versão de um módulo e altera o module.xml correspondente. O Magento salva a versão do módulo atual em um banco de dados e, se o valor do banco de dados e o do module.xml não corresponderem, ele executará o código de atualização.
Dependências. Se um módulo depender de outro, o arquivo module.xml terá uma declaração especial que define uma lista de módulos dos quais o módulo atual depende. Para este exemplo, tornaremos nosso módulo dependente de Magento_Catalog.
Usando o seguinte código de linha de comando, crie a pasta app/code/Learning/FirstUnit/etc :
mkdir app/code/Learning/FirstUnit/etc
Em seguida, crie um arquivo XML com o seguinte conteúdo:
<?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="Learning_FirstUnit" setup_version="0.0.1"> <sequência> <module name="Magento_Catalog" /> </sequência> </module> </config>
Observe que no arquivo XML especificamos:
- Nome do módulo: Learning_FirstUnit (com base nas pastas que criamos)
- Versão: 0.0.1 (versão inicial do nosso módulo)
- Dependência: Magento_Catalog. Poderíamos ter várias dependências. Nesse caso, colocaríamos os nós <module name=”..” /> sob o nó de sequência.
Etapa 3: crie o arquivo registration.php
Cada módulo deve ter este arquivo, que informa ao Magento como localizar o módulo. Continuando nosso exemplo, crie o arquivo app/code/Learning/FirstUnit/registration.php . Em seguida, coloque o seguinte conteúdo nele:
<?php \Magento\Framework\Component\ComponentRegistrar::register(\Magento\Framework\Component\ComponentRegistrar::MODULE, 'Learning_FirstUnit', __DIR__);
O registration.php é um arquivo padronizado que segue o mesmo padrão para todos os módulos.
A única coisa que varia é o nome do módulo, que no nosso caso é Learning_FirstUnit
.
Etapa 4: execute o comando “setup:upgrade”
A execução deste comando ativa seu novo módulo, notificando o Magento de sua presença.
php bin/magento configuração: atualização
Deve ecoar uma grande quantidade de saída, uma linha da qual deve ser Learning_FirstUnit
. Verifique se esta linha de código está lá.
Etapa 5: Verifique se o novo módulo está ativo
Até agora, não adicionamos nenhum código útil ao nosso módulo – ele ainda está vazio (e, portanto, invisível). Para verificar se foi reconhecido, verifique o arquivo app/etc/config.php . Ele tem uma lista de módulos gerados automaticamente que estão ativos.
Nunca altere esta lista manualmente!
cat app/etc/env.php | grep Learning_FirstUnit
Empregando essas etapas, você pode criar com sucesso um novo módulo no Magento 2.
Consulte Mais informação:
Como implantar conteúdo estático no Magento 2