Criar um módulo local a partir do módulo Test
Neste post, vamos criar um módulo local na estrutura da plataforma Badiu.Net, seguindo o padrão Symfony. Os módulos locais ficam na pasta Badiu/Local/ e servem para adicionar ou personalizar funcionalidades específicas de uma instalação.
Para isso, vamos copiar a estrutura de um módulo chamado Test já existente e, a partir dela, criaremos um novo módulo chamado Agent. Essa mesma lógica pode ser utilizada para criar um módulo do zero, seja ele local ou não.
1. Entendendo o Modelo Base (TestBundle)
A estrutura do módulo de exemplo é:
Badiu/Local/TestBundle/
├── BadiuLocalTestBundle.php
├── Entity/
├── Model/
├── View/
└── Resources/
├── config/
│ ├── services.yml
│ ├── routing.yml
│ └── config.yml
└── translations/
└── messages.pt.yml
A estrutura acima representa o modelo padrão de um módulo na plataforma Badiu.Net. A seguir, apresentamos a explicação de cada item que compõe essa estrutura.
| Pasta / Arquivo | Finalidade |
|---|---|
BadiuLocalTestBundle.php |
Arquivo principal do módulo local. O nome Test deve ser substituído pelo nome específico do módulo que está sendo criado (ex.: Agent, User, etc). Esse nome será utilizado como parte do namespace e da identificação do bundle no Symfony |
Entity/ |
Entidades Doctrine |
Model/ |
Serviços e regras de negócio |
View/ |
Templates e lógica de exibição (frontend) |
Resources/config/services.yml |
Registro de serviços Symfony |
Resources/config/routing.yml |
Definição das rotas do módulo |
Resources/config/config.yml |
Configurações gerais |
Resources/translations/messages.pt.yml |
Traduções de mensagens da interface |
2. Criar o Novo Módulo Agent
Ao criar um novo módulo a partir da cópia de um já existente, é necessário renomear as pastas e os arquivos, substituindo o nome antigo pelo novo em toda a estrutura de diretórios e arquivos.
a) Copiar o Módulo TestBundle
cd Badiu/Local
cp -r TestBundle AgentBundle
b) Renomear arquivos e namespaces
- Renomeie
BadiuLocalTestBundle.phpparaBadiuLocalAgentBundle.php - Atualize o namespace no arquivo:
namespace Badiu\Local\AgentBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class BadiuLocalAgentBundle extends Bundle
{
}
Substitua todos os TestBundle por AgentBundle nos arquivos internos. É necessário também substituir as chaves e rotas nos arquivos de configuração YAML para adequá-las ao novo padrão de nomenclatura do módulo. Essa substituição deve ser realizada em todos os arquivos localizados na pasta Resources.
3. Ativar o Módulo no Symfony
a) Adicionar no config/bundles.php
Badiu\Local\AgentBundle\BadiuLocalAgentBundle::class => ['all' => true],
b) Adicionar no composer.json
"autoload": {
"psr-4": {
"App\\": "src/",
"Badiu\\Local\\AgentBundle\\": "Badiu/Local/AgentBundle/"
}
},
"autoload-dev": {
"psr-4": {
"Badiu\\Local\\AgentBundle\\": "Badiu/Local/AgentBundle/"
}
}
d) Adicionar rotas no config/routes.yaml
badiu_local_agent:
resource: "../Badiu/Local/AgentBundle/Resources/config/routing.yml"
prefix: /
e) Atualizar sistema
Para atualizar o Symfony, execute os seguintes comandos:
composer dump-autoload