Pegar Valor de variável para meus IFs Bom dia! Amigos...algo que parece tão "banal" mas que em php nao peguei bem a idéia.... crio variáveis / campos facilmente: $cod_cli = new TEntry('cod_cli'); $tipo_pessoa = new TCombo('tipo_pessoa'); e depois coloco na tela normalmente: $row = $this->form->addFields( [ new TLabel('Código'), $cod_cli ], [ new TLabel('Tipo Pessoa'), $tipo_...
RS
Pegar Valor de variável para meus IFs  
Bom dia!

Amigos...algo que parece tão "banal" mas que em php nao peguei bem a idéia....

crio variáveis / campos facilmente:

$cod_cli = new TEntry('cod_cli');
$tipo_pessoa = new TCombo('tipo_pessoa');

e depois coloco na tela normalmente:

$row = $this->form->addFields( [ new TLabel('Código'), $cod_cli ],
[ new TLabel('Tipo Pessoa'), $tipo_pessoa ] );

preencho os dados e até salvo no banco normalmente...percebi que no onSave da vida ele lê todos os dados do Form...blz

mas a questão é que preciso colocar algumas regras no form: por exemplo, se no campo $tipo_pessoa for selecionado "PESSOA FÍSICA", alguns campos teram o comportamento diferente de se selecionado "PESSOA JURIDICA"...ou seja, preciso ler os valores de alguns campos específicos para fazer meus IFs...como seria essa leitura individual de uma campo / variável de pois de preenchidos?

Rodrigo

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (4)


FF

Para "ler" valores de campos, você pode fazer assim:
Suponhamos que você queira saber o valor do campo cod_cli ou do tipo_pessoa:

 
  1. <?php
  2. static function pegaDados($param)
  3. {
  4. if ($param['cod_cli'] == '123')
  5. {
  6. new TMessage('info', $param['cod_cli']);
  7. }
  8. if ($param['tipo_pessoa'] == 'PESSOA JURÍDICA')
  9. {
  10. new TMessage('info', $param['cod_cli']);
  11. }
  12. }
  13. ?>


Quando se usa um parâmetro em uma função (nesse caso a variável $param), automaticamente o framework passa TODOS OS CAMPOS DO FORMULÁRIO para a função, bastando apenas consultar o valor do campo através do nome do campo como mostrado acima. Isso é útil em casos nos quais estamos usando uma função estática onde não podemos usar a variável "->this".

Outra forma de "ler" os dados dos campos preenchidos é assim: (agora mantendo o formulário preenchido sem usar parâmetro na função)
 
  1. <?php
  2. private $form;
  3. function pegaDados()
  4. {
  5. $dados = $this->form->getData();
  6. $this->form->setData($dados);
  7. if($dados->cod_cli == '123')
  8. {
  9. new TMessage('info', $dados->cod_cli);
  10. }
  11. if($dados->tipo_pessoa == 'PESSOA JURÍDICA')
  12. {
  13. new TMessage('info', $dados->tipo_pessoa);
  14. }
  15. }
  16. ?>
RS

Fábio! Muito obrigado pela atenção!

Usei a primeira opção e funcionou lindamente...mas, para completar esse if, preciso depois de ler o tipo_pessoa, se for JURIDICA, preciso desabilitar alguns campos...notei que para desabilitar um campo basicamente seria assim:

$tipo_pessoa->setEditable(FALSE);

mas como criei uma função(abaixo), nao esta conseguindo acessar a variavel $cnpj_cpf:

public function onValidaTipoPessoa( $param )
{
if($param['tipo_pessoa'] == 'F')
{
new TMessage('info', 'tipo de pessoa: fisica');
$cnpj_cpf->setEditable(FALSE); <<<<<<<---------------AQUI
}else{

new TMessage('info', 'tipo de pessoa: JURIDICA');
}
}
FF

Rodrigo, tente assim:

 
  1. <?php
  2. if($param['tipo_pessoa'] == 'F')
  3. {
  4. TEntry::disableField('nome_do_form', 'nome_do_campo');
  5. new TMessage('info', 'tipo de pessoa: fisica');
  6. }
  7. ?>
FF

O mesmo serve para outros tipos de campo, exemplo:
 
  1. <?php
  2. //se o campo for tipo Combo
  3. TCombo::disableField('nome_do_form', 'nome_do_campo');
  4. ?>