Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Chamar método de um Formulário com o TSeekButton aberto Bom dia! Alguém sabe como chamar um método de um formulário quando o TSeekButton está aberto? Eu preciso dar um onreload no formulário e depois preencher com os dados. Preciso disso para realizar uma verificação para liberação de campos.. depois que um item do TSeekButton é selecionado.. ele tem que liberar 2 campos que estão escondidos para então continuar com o processo, antes d...
CG
Chamar método de um Formulário com o TSeekButton aberto  
Bom dia!

Alguém sabe como chamar um método de um formulário quando o TSeekButton está aberto?
Eu preciso dar um onreload no formulário e depois preencher com os dados.
Preciso disso para realizar uma verificação para liberação de campos.. depois que um item do TSeekButton é selecionado.. ele tem que liberar 2 campos que estão escondidos para então continuar com o processo, antes disso os botões ficam ocultos, e eu fiz um uma verificação no construtor para esconder os campos e liberar.

Alguém sabe como fazer?
Obrigado!

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 (9)


NR

Você pode usar a função postData dentro da onSelect da seek. Ex:
  1. <?php
  2. // onselect seek
  3. ...
  4.  TForm::sendData('nome_form'$object);
  5.             
  6. TApplication::postData('nome_form','nome_classe','nome_funcao');
  7. parent::closeWindow(); // closes the window
  8. ?>
CG

Obrigado pela resposta Nataniel!

O que eu preciso fazer é esconder campos quando abro pela primeira vez o formulário (o que está funcionando, verifico um valor na sessão, se for nulo eu não mostro) e está funcionando!
Quando eu clico no TSeekButton eu seleciono um item e envio esses dados para o formulário, tudo funcionando também!
Também está funcionando quando eu abro o Seek e seleciono o item ele libera os campos escondidos, essa parte está ok!
O que não está funcionando agora é o envio dos valores para o form, eu percebo que ele envia os valores e depois eles somem.
  1. <?php
  2. public function onSelect($param)
  3.     {
  4.         try
  5.         {
  6.              $key $param['key'];
  7.              TTransaction::open('gecon');       
  8.              $send = new StdClass;
  9.              $object = new Condominio($key);
  10.             if(TSession::getValue('formulario')=='AdminSindico')
  11.             {
  12.                 $send->condominio_id $object->id;
  13.                 $send->condominio_nome $object->nome_fantasia;
  14.                 TApplication::postData('form_admin_sindico','AdminSindicoForm','alternar');
  15.                 TForm::sendData('form_admin_sindico'$send);
  16.                 $options $this->popularComboUnidadesLivres($param);
  17.                 TTransaction::close();
  18.                 TSession::setValue('condominio_id'$object->id);
  19.                 TSession::setValue('teste','teste');
  20.                 TCombo::reload('form_admin_sindico''unidade_id'$options);
  21.                // echo var_dump($param);
  22.                parent::closeWindow(); // closes the window
  23.             }
  24. ?>

Ele está chamando o método do formulário, mas sempre limpa os registros do formulário, nem a minha TCombo fica com os valores.. sempre limpa!
Saberia me dizer o pq?
Se eu retirar esse TAplication o formulário é populado normalmente, sem problemas!

Obrigado!
NR

Você precisa capturas as informações e enviá-las de volta ao form:
  1. <?php
  2. // function alternar
  3. $this->form->setData($this->form->getData());
  4. ?>

Mas acho que você deve chamar a função sendData antes da função postData, pois postData vai recarregar todo form.
CG

Verdade! eu já tinha tentando inverter também, mas como não tinha funcionado acabei deixando daquele jeito!
Mas sim, tem que inverter mesmo, e agora funcionou perfeitamente!

Muito obrigado Nataniel!
CG

Uma última dúvida, fiz um objeto stdClass para enviar para o formulário os dados, tudo certo.
O objeto ficou assim:

  1. <?php
  2. TForm::sendData('form_admin_sindico'$send);
  3. //dump do objeto
  4. object(stdClass)[178]
  5.   public 'condominio_id' => string '2' (length=1)
  6.   public 'condominio_nome' => string 'Condominio Teste' (length=16)
  7.   public 'unidade_id' => 
  8.     array (size=5)
  9.       => string '103 Bloco A' (length=11)
  10.       => string '105 Bloco A' (length=11)
  11.       => string '106 Bloco A' (length=11)
  12.       => string '107 Bloco A' (length=11)
  13.       => string '108 Bloco A' (length=11)
  14. ?>


Mas no formulário ele chega assim:
  1. <?php
  2. //dump do getData
  3. var_dump($this->form->getData());
  4. object(stdClass)[299]
  5.   public 'id' => string '' (length=0)
  6.   public 'condominio_id' => string '2' (length=1)
  7.   public 'condominio_nome' => string 'Condominio Teste' (length=16)
  8.   public 'morador_id' => string '' (length=0)
  9.   public 'morador_nome' => string '' (length=0)
  10.   public 'telefone' => string '' (length=0)
  11.   public 'celular' => string '' (length=0)
  12.   public 'cnpjcpf' => string '' (length=0)
  13.   public 'rgie' => string '' (length=0)
  14.   public 'tipo_sindico' => string '' (length=0)
  15.   public 'email' => string '' (length=0)
  16.   public 'data_inicio' => string '' (length=0)
  17.   public 'data_fim' => string '' (length=0)
  18.   public 'proprietario' => string '' (length=0)
  19.   public 'unidade_id' => string '' (length=0)
  20.   public 'user_id' => string '' (length=0)
  21.   public 'sindico_id' => string '' (length=0)
  22.   public 'pessoa_id' => string '' (length=0)
  23. ?>


Porque o vetor não está passando? Alguém sabe?
NR

A função getData só retorna os dados referentes aos campos do formulário. Como não existe um campo unidade_id no form, essa informação é ignorada.
CG

Não pode, o campo unidade_id existe sim, é a minha TDBCombo!
Estou conseguindo resolver por sessão, quando o formulário carrega novamente pega o valor da sessão e coloco no campo unidade_id, daí funciona!
Mas o objeto fica vazio no campo unidade_id.
Vou dar uma olhada pq não queria ter que usar a sessão pra isso.



NR

Se o campo existe, o problema está na passagem do array. A função sendData não recarrega a combo, apenas seleciona um item já existente na mesma, por isso deve receber um valor simples, correspondente a chave do valor desejado.
CG

Verdade, voce está certo! A combo estava vazia quando enviei o objeto, obviamente não tinha nenhum índice para selecionar!
E a maneira que fiz então acabou sendo a maneira mais adequada, recarregar a combo com os valores que coloquei na sessão!
Realmente não me liguei nesse detalhe!!

Obrigado!