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.