Formulário de cadastro


Para gerar o formulário de cadastro na plataforma Badiu.Net, é necessário configurar três arquivos principais: config.yml, service.yml e router.yml.

Utilizaremos como exemplo a chave badiu.system.access.role. Essa chave representa a funcionalidade role, pertencente ao módulo access e à categoria de módulo system. Todas as instruções a seguir se baseiam nesta chave, mas a mesma lógica pode ser aplicada a qualquer outra funcionalidade.

 

1. Configuração do arquivo config.yml

badiu.system.access.role.data.form.config: defaultdataonpenform=enablerestrictparentkey/0
badiu.system.access.role.data.form.fields.available: name,shortname,description,timecreated,timemodified,deleted,idnumber,description,param
badiu.system.access.role.data.form.fields.enable: general=name,shortname,description&otherconf=enablerestrictparentkey,defaultroute,idnumber,param
badiu.system.access.role.data.form.fields.required: name=1
badiu.system.access.role.data.form.fields.cssclass:
badiu.system.access.role.data.form.fields.type: description=textarea&param=textarea&enablerestrictparentkey=choice
badiu.system.access.role.data.form.fields.choicelist: enablerestrictparentkey=defaultboolean
badiu.system.access.role.data.form.fields.label: name=badiu.system.access.role.name&defaultroute=badiu.system.access.defaultroute&enablerestrictparentkey=badiu.system.access.role.enablerestrictparentkey
badiu.system.access.role.data.form.fields.placeholder: defaultroute=badiu.system.access.defaultroute.placeholder

Essas variáveis geram automaticamente o formulário. A seguir, explicamos cada uma delas sem a chave da funcionalidade, pois esta varia conforme a funcionalidade.

Variável Descrição
data.form.config Configuração geral do formulário, como valores padrão de campos.
data.form.fields.available Lista de todos os campos disponíveis.
data.form.fields.enable Lista de campos ativados no formulário.
data.form.fields.required Define quais campos são obrigatórios.
data.form.fields.cssclass Define a classe CSS para cada campo.
data.form.fields.type Define o tipo de campo (ex: choice, textarea, badiuautocomplete etc.).
data.form.fields.choicelist Define a lista de opções para campos com escolhas.
data.form.fields.label Define os rótulos (labels) dos campos.
data.form.fields.placeholder Define os placeholders dos campos.

 

2. Configuração do arquivo routing.yml

badiu.system.access.role.index:
    path:       /system/access/role/index
    controller: Badiu\System\CoreBundle\Controller\Functionality\BadiuController::index
badiu.system.access.role.add:
    path:       /system/access/role/add
    controller: Badiu\System\CoreBundle\Controller\Functionality\BadiuController::addservice
badiu.system.access.role.edit:
    path:       /system/access/role/edit/{id}
    controller: Badiu\System\CoreBundle\Controller\Functionality\BadiuController::addservice
badiu.system.access.role.copy:
    path:       /system/access/role/copy/{id}
    controller: Badiu\System\CoreBundle\Controller\Functionality\BadiuController::addservice

Rota Finalidade
index Exibe a tela com a lista de registros. Possui opções para editar, clonar e excluir. Exige configuração adicional nos arquivos config.yml e service.yml para gerar relatórios (fora do escopo deste tutorial).
add Responsável pelo cadastro de um novo registro.
edit Carrega os dados de um registro existente para edição. A interface de edição está vinculada à tela do relatório (index).
copy Permite clonar um registro e redireciona para o formulário de cadastro para salvar como novo.

3. Configuração do arquivo services.yml

badiu.system.access.role.entity:
    class:  Badiu\System\AccessBundle\Entity\SystemAccessRole
    shared: false
    public: true
    arguments: []
badiu.system.access.role.data:
    class:  Badiu\System\CoreBundle\Model\Functionality\BadiuDataBase
    shared: false
    public: true
    arguments: ['@service_container', 'BadiuSystemAccessBundle:SystemAccessRole']
badiu.system.access.role.report:
    class:  Badiu\System\CoreBundle\Model\Functionality\BadiuReport
    shared: false
    public: true
    arguments: ['@service_container', 'badiu.system.access.role']

Serviço Responsabilidade
entity Classe de mapeamento ORM do banco de dados.
data Serviço responsável pela manipulação dos dados da funcionalidade.
report Serviço para geração de relatórios.

Conclusão

A chave da funcionalidade é a base de todas as configurações. Ao criar uma nova funcionalidade em um módulo, você deve definir essa chave. A partir dela, você estrutura os arquivos yml, seguindo sempre a mesma lógica — o que muda é apenas a chave.