Formulário de cadastro de configuração


O cadastro de configuração é um componente que registra, em uma base de dados geral, chaves e valores associados a uma entidade. Diante disso, a configuração do formulário nos arquivos config.yml, service.yml e router.yml apresenta algumas diferenças em relação ao cadastro convencional. No entanto, a lógica base permanece a mesma.

Neste exemplo, será apresentada a configuração para o SMTP. A chave da funcionalidade utilizada é badiu.system.module.configsmtp. Siga a lógica dessa configuração e aplique-a à sua funcionalidade específica.

 

1. Configuração do arquivo config.yml


badiu.system.module.configsmtp.data.form.config:
badiu.system.module.configsmtp.data.form.fields.enable: general=badiu_system_core_param_config_smtphost,badiu_system_core_param_config_smtpport,badiu_system_core_param_config_smtpuser,badiu_system_core_param_config_smtppassword,badiu_system_core_param_config_smtpsecurity,badiu_system_core_param_config_smtpemailsender,badiu_system_core_param_config_smtpusersender,badiu_system_core_param_config_smtpemailreplay,badiu_system_core_param_config_smtpenableauthuserstocustom
badiu.system.module.configsmtp.data.form.fields.required: 
badiu.system.module.configsmtp.data.form.fields.cssclass: 
badiu.system.module.configsmtp.data.form.fields.type: badiu_system_core_param_config_smtpenableauthuserstocustom=choice
badiu.system.module.configsmtp.data.form.fields.choicelist: badiu_system_core_param_config_smtpenableauthuserstocustom=defaultboolean
badiu.system.module.configsmtp.data.form.fields.label: badiu_system_core_param_config_smtphost=badiu.system.module.configsmtphost&badiu_system_core_param_config_smtpport=badiu.system.module.configsmtpport&badiu_system_core_param_config_smtpuser=badiu.system.module.configsmtpuser&badiu_system_core_param_config_smtppassword=badiu.system.module.configsmtppassword&badiu_system_core_param_config_smtpsecurity=badiu.system.module.configsmtpsecurity&badiu_system_core_param_config_smtpemailsender=badiu.system.module.configsmtpemailsender&badiu_system_core_param_config_smtpusersender=badiu.system.module.configsmtpusersender&badiu_system_core_param_config_smtpemailreplay=badiu.system.module.configsmtpemailreplay&badiu_system_core_param_config_smtpenableauthuserstocustom=badiu.system.module.configsmtpenableauthuserstocustom
badiu.system.module.configsmtp.data.form.fields.placeholder: badiu_system_core_param_config_smtphost=badiu.system.module.configsmtphost.placeholder&badiu_system_core_param_config_smtpport=badiu.system.module.configsmtpport.placeholder&badiu_system_core_param_config_smtpuser=badiu.system.module.configsmtpuser.placeholder&badiu_system_core_param_config_smtppassword=badiu.system.module.configsmtppassword.placeholder&badiu_system_core_param_config_smtpsecurity=badiu.system.module.configsmtpsecurity.placeholder&badiu_system_core_param_config_smtpemailsender=badiu.system.module.configsmtpemailsender.placeholder&badiu_system_core_param_config_smtpusersender=badiu.system.module.configsmtpusersender.placeholder

Na definição dos campos, é obrigatório utilizar o prefixo do módulo com o separador _ (sublinhado), e não . (ponto), seguido de param_config ao final. No exemplo apresentado, a chave do módulo é badiu.system.core, portanto, o prefixo utilizado deve ser badiu_system_core_param_config_. Caso esteja customizando o módulo CoreAuthe, cuja chave é badiu.auth.core, o prefixo correto será badiu_auth_core_param_config_. Esse padrão é uma exigência do componente de formulário de configuração.

 

2. Configuração do arquivo routing.yml

badiu.system.module.configsmtp.edit:
    path:  /system/module/config/smtp/edit
    controller: Badiu\System\CoreBundle\Controller\Functionality\BadiuController::addservice
badiu.system.module.serviceconfig.edit:
    path:  /system/module/config/service/edit
    controller: Badiu\System\CoreBundle\Controller\Functionality\BadiuController::addservice

Nesta etapa, deve-se alterar apenas a chave base da funcionalidade e o caminho da rota. A classe do controlador permanece padrão.

3. Configuração do arquivo services.yml

    badiu.system.module.configsmtp.entity:
        class: Badiu\System\ModuleBundle\Entity\SystemModuleConfigEntity
        shared: false
        public: true
        arguments:      
        
    badiu.system.module.configsmtp.data:
        class: Badiu\System\ModuleBundle\Model\ConfigEntityData
        shared: false
        public: true
        arguments: ['@service_container',BadiuSystemModuleBundle:SystemModuleConfigEntity]
    badiu.system.module.configsmtp.formcontroller:
        class: Badiu\System\ModuleBundle\Model\ConfigEntityCutomFormController
        shared: false
        public: true
        arguments: ['@service_container']

Altere apenas a chave da funcionalidade. As definições de entidade, serviço de dados e controlador de formulário permanecem padrão.

4. Recuparar valor 

Para recuperar o valor de uma variável configurada no formulário de configuração, basta acessar o serviço de sessão e utilizar a chave correspondente. O código a seguir ilustra como recuperar o valor da variável smtphost:

$badiuSession = $this->getContainer()->get('badiu.system.access.session');
$badiuSession->setHashkey($this->getSessionhashkey());
$badiuSession->setSystemdata($this->getSystemdata());
$smtphost = $badiuSession->getValue('badiu.system.core.param.config.smtphost');

Conclusão

A lógica geral da configuração de formulários deve ser mantida. Basta alterar a chave da funcionalidade conforme o contexto da sua necessidade. Para mais detalhes sobre cada variável, siga as mesmas diretrizes da lógica apresentada no  cadastro de formulário padrão.