Lançado Adianti Framework 7.6!
Clique aqui para saber mais
BUG TDate::disableField Olá a todos. Creio ter encontrado mais um BUG no framework, analisem o caso: Em um projeto, no método construtor de um formulário do tipo BootstrapFormBuilder tenho o seguinte campo: ...
AG
BUG TDate::disableField  
Olá a todos.

Creio ter encontrado mais um BUG no framework, analisem o caso:

Em um projeto, no método construtor de um formulário do tipo BootstrapFormBuilder tenho o seguinte campo:

  1. <?php
  2.         $data_vencimento = new TDate('data_vencimento');
  3.         
  4.         $data_vencimento->setMask('dd/mm/yyyy');
  5.         $data_vencimento->setDatabaseMask('yyyy-mm-dd');
  6.         $data_vencimento->setValuedate("d/m/Y") );
  7.         $data_vencimento->setSize('100%');
  8. ?>

Tem mais campos, mas eles funcionam perfeitamente.

Eu consigo cadastrar, editar, limpar sem problemas. Mas no método onEdit(), existe uma condição que, se for válida, desativa alguns campos do Form. Para isso utilizo o seguinte comando:

  1. <?php
  2.         TDate::disableField('form_Lancamento''data_vencimento');
  3. ?>


Até aqui tudo certo, o campo aparece preenchido mas desabilitado para edição. Perfeito.
Ao clicar em Salvar, TODOS os campos são enviados no POST para o PHP, mas o campo 'data_vencimento' é enviado com valor NULO.

A minha solução foi utilizar o método não estático setEditable(FALSE) dentro da condição sitada acima, assim:

  1. <?php
  2.         $data_vencimento $this->form->getField('data_vencimento');
  3.         $data_vencimento->setEditable(FALSE);
  4. ?>


Pelo comportamento, estou supondo que seja um BUG, mas pode ser outra coisa.
Espero ter ajudado alguém.

Abraços.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (3)


ER

Olá André,

Apesar de seu post ser antigo mais, passei por isso essa semana!, vejo que isso é realmente um Bug das classes no Adianti... Obrigado por compartilhar, sua dica resolveu o meu problema também! Valeu!
ER

Voltando ao Post,

Comigo agora gerou mais um problema, nos campos TDBSeekButton ao usar o $CLIENTE->setEditable(FALSE) o campo $CLIENTE_display do TDBSeekButton sumiu do formulário, alguma luz?
AG

Olá Carlos,

Eu não estou tendo esse tipo de problema com o TDBSeekButton ao ativar ou desativar pelos comandos:
  1. <?php 
  2. TDBSeekButton::enableField('form''campo');
  3. ">TDBSeekButton::disableField('form''campo');
  4. ">TDBSeekButton::clearField('form''campo');
  5. ?>


Todavia, tente usar no lugar o TDBCombo mais o parametro enableSearch(), visualmente o resultado será o mesmo:
  1. <?php
  2. $campo = new TDBCombo('campo''banco''model''id''descricao');
  3. $campo->enableSearch();
  4. ?>


Depois, implemente em sua lógica os comandos para ativar ou desativar quando necessário:
  1. <?php 
  2. TDBCombo::enableField('form''campo');
  3. TDBCombo::disableField('form''campo');
  4. TDBCombo::clearField('form''campo');
  5. ?>


Outra coisa, não deixe de atualizar o framework.
Abraços