Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Tornando campos invisíveis com onChangeAction Olá, estou usando o recurso de tornar um campo invisível ou visível dependendo da ocasião. No meu caso, quando seleciono(TCombo) como pessoa Física, Escondo CNPJ e IE e quando seleciono Pessoa Jurídica, escondo CPF e Identidade. Tudo está funcionando perfeitamente até quando algum campo é validado. Ex: se o e-mail está invalido(TEmailValidator), quando isso acontece perco o controle e a...
AR
Tornando campos invisíveis com onChangeAction  
Olá, estou usando o recurso de tornar um campo invisível ou visível dependendo da ocasião. No meu caso, quando seleciono(TCombo) como pessoa Física, Escondo CNPJ e IE e quando seleciono Pessoa Jurídica, escondo CPF e Identidade. Tudo está funcionando perfeitamente até quando algum campo é validado. Ex: se o e-mail está invalido(TEmailValidator), quando isso acontece perco o controle e aparecem os quatros campos na tela e aí só carregando a tela novamente.

Alguém pode ajudar ?
Obrigado.

  1. <?php
  2.        $tipo_pessoa->addItems( ['F' => 'Física''J' => 'Jurídica'] );
  3.      
  4.      
  5.         $change_action_cpf_cnpj = new TAction(array($this'onChangeAction'));
  6.         $tipo_pessoa->setChangeAction($change_action_cpf_cnpj);
  7.       
  8.         
  9.         $this->form->addFields([new TLabel('Id:')],[$id]);
  10.         $this->form->addFields([new TLabel('Nome:')],[$nome],[new TLabel('Tipo Pessoa:')],[$tipo_pessoa]);
  11.         $this->form->addFields([new TLabel('CPF:','#2196F3')],[$cpf],[],[]);
  12.         $this->form->addFields([new TLabel('Identidade:','#2196F3')],[$documento],[],[]);
  13.         $this->form->addFields([new TLabel('CNPJ :','#19713E')],[$cnpj],[],[]);
  14.         $this->form->addFields([new TLabel('IE:','#19713E')],[$ie],[],[]);
  15.     public static function onChangeAction($param)
  16.           {
  17.     
  18.                
  19.                 if ($param['tipo_pessoa'] == 'F')
  20.                 {
  21.                    TQuickForm::showField('form_Pessoa''cpf');
  22.                    TQuickForm::showField('form_Pessoa''documento');
  23.                    TQuickForm::hideField('form_Pessoa''cnpj');
  24.                    TQuickForm::hideField('form_Pessoa''ie');
  25.                 }
  26.                 else
  27.                 {
  28.                     TQuickForm::hideField('form_Pessoa''cpf');
  29.                     TQuickForm::hideField('form_Pessoa''documento');
  30.                     TQuickForm::showField('form_Pessoa''cnpj');
  31.                     TQuickForm::showField('form_Pessoa''ie');
  32.                 }
  33.                 
  34.         }
  35.  public function onSave($param null
  36.     {
  37.         try
  38.         {
  39.             TTransaction::open('dbaerp'); // abre transação
  40.             
  41.             $this->form->validate(); // valida dados  <----Neste momento perco o controle.
  42. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (2)


NR

Você pode transformar a função onSave em estática:
adianti.com.br/framework_files/tutor/index.php?class=FormStaticBuild

Ou chamar a função TForm::sendData para reexecutar a ação de alteração do campo:
  1. <?php
  2. $data $this->form->getData();
  3. TForm::sendData('form_Pessoa',(object)['tipo_pessoa'=>$data->tipo_pessoa]);
  4. ?>
AR

Obrigado, Nataniel! Assim funcionou perfeitamente.

  1. <?php
  2.  public function onSave($param null
  3.     {
  4.         try
  5.         {
  6.             TTransaction::open('dbaerp'); // abre transação
  7.             
  8.             $data $this->form->getData(); // dados do form
  9.             TForm::sendData('form_Pessoa',(object)['tipo_pessoa'=>$data->tipo_pessoa]);
  10.            
  11.             $this->form->validate(); // valida dados
  12.             
  13.             
  14.             $object = new Pessoa(); // create an empty object
  15.          
  16. ?>