Lançado Adianti Framework 7.6!
Clique aqui para saber mais
ExitAction entrando em Loop Boa tarde! Criei uma ação para o campo codigo para o momento que pede-se o seu foco. Verificando através do debug verifique que ele executa tudo que foi determinado, porém o mesmo não sai mais do codigo voltando constantemente no mesmo ficando num loop. Observei que somente acontece isso quando tento executar o sendData do tform. Tanto faz a função ser estatic ou public o mesmo...
RR
ExitAction entrando em Loop  
Fechado
Boa tarde!

Criei uma ação para o campo codigo para o momento que pede-se o seu foco.

Verificando através do debug verifique que ele executa tudo que foi determinado, porém o mesmo não
sai mais do codigo voltando constantemente no mesmo ficando num loop.

Observei que somente acontece isso quando tento executar o sendData do tform.

Tanto faz a função ser estatic ou public o mesmo fica um loop e não sai mais.

Se alguem soube o por que, desde já agradeço pelo ajuda.

Segue o parte do código

$ExitCodFerro = new Adianti\Control\TAction(array($this,'onExitCodFerro'));
$this->vcodferro->setExitAction($ExitCodFerro);

public function onExitCodFerro($param){
$funcoes = new funcoesCalcFer();
$resultado = $funcoes->Pesqprod($param['vcodferro']);
if (!empty($resultado)) {
$obj = new stdClass();
$obj->vcodferro = $resultado->CODIGO;
$obj->vdescriferro = $resultado->DESCRI;
$obj->vqtdferro = 1;
\Adianti\Widget\Form\TForm::sendData('form_pedido', $obj);

}
}

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


PD

Acho que já resolvemos por e-mail, certo?

Pelo que tínhamos visto, o erro era que um dos campos (vcodferro) enviados pelo sendData() tinha uma exitAction() e isso estava gerando uma recursão.

Att,
Pablo
PD

Você não precisa usar os Namespaces qualificados (AdiantiControlTAction) pois o framework mapeia automaticamente suas próprias classes para o escopo global.

Att,
Pablo
MH

Boa Noite!

Pablo,

Estou com o mesmo problema, efetuei uma busca de CEP, porém entra em loop infinito, estou usando a função setExitAction.
  1. <?php
  2. $cep_residencia      = new TEntry('cep_residencia');
  3. $cep_residencia->setExitAction( new TAction( array($this'BuscaCep')));
  4.     public static function BuscaCep($param)
  5.     {
  6.         $Cep $param['cep_residencia'];
  7.         $Cep str_replace("-","",$Cep);
  8.         print_r($Cep);
  9.         // $Cep = preg_replace("/D/","", $Cep);
  10.         
  11.         if ($Cep != "")
  12.         {        
  13.             $resultado simplexml_load_string(@file_get_contents("http://viacep.com.br/ws/".$Cep."/xml/"));
  14.             $erro = (string) $resultado->erro;
  15.             if ( !$erro )
  16.             {
  17.                 $objects['cep_residencia']         = (string) $resultado->cep;
  18.                 $objects['endereco_residencia']  = (string) $resultado->logradouro;   
  19.                 $objects['complemento'] = (string) $resultado->complemento;   
  20.                 $objects['bairro_residencia']      = (string) $resultado->bairro;
  21.                 $objects['cidade_residencia']  = (string) $resultado->localidade;   
  22.                 $objects['uf_residencia']          = (string) $resultado->uf;   
  23.                 TForm::sendData('CadastroAlunoForm'$objects);            
  24.                exit;
  25.             } else return FALSE;
  26.         } else return FALSE;       
  27.     }
  28. ?>
MP

Olá pessoal,

Estou tendo esse problema, pesquisei o que pude e testei tudo do pouco que tenho dominio. Estou iniciando no framework não tenho mais recursos para solucionar esse problema na consulta. O formulario entra em loop e quando o CEP não existe não é dado a msg de CEP não exitente.

Sou novo no desenvolvimento Front End, minha especialidade é telecom a qual espero poder contribuir aqui caso alguem use o framework principalmente para asterisk.

Aguardo uma luz!!! obrigado a todos.

  1. <?php
  2. /**
  3.  * BookForm
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class CadastroPessoasFisicaForm extends TPage
  13. {
  14.       private $form// form
  15.     /**
  16.      * Class constructor
  17.      * Creates the page and the registration form
  18.      */
  19.     function __construct()
  20.     {
  21.         parent::__construct();
  22.         
  23.         // creates the form
  24.        $this->form = new BootstrapFormBuilder('form_cadastropessoas');
  25.        $this->form->setFormTitle(('Pessoas'));
  26.         
  27.        $id                = new TEntry('id');
  28.        
  29.        $datacadastro = new TDate('datacadastro');
  30.        $datacadastro->setMask('dd/mm/yyyy');
  31.        $datacadastro->setDatabaseMask('yyyy-mm-dd');
  32.        
  33.        $ativo           = new TCombo('ativo');
  34.        $ativo->addItems(array('Ativo'=> 'Ativo''Bloqueado'=> 'Bloqueado'));
  35.        
  36.        $motivo           = new TCombo('motivo');
  37.        $motivo->addItems(array('Falta Pagamento'=> 'Falta Pagamento''Fim de Contrato'=> 'Fim de Contrado'));
  38.        
  39.        $tipopjpf        = new TCombo('tipopjpf');
  40.        $tipopjpf->addItems(array('Pessoa Física'=> 'Pessoa Fisica''Pessoa Juridica'=> 'Pessoa Juridica'));
  41.        $cpfcnpj            = new TEntry('cpfcnpj');
  42.        $cpfcnpj->setMask('999.999.999.99');
  43.        $nomerazao        = new TEntry('nomerazao');
  44.           $tipopessoa        = new TCombo('tipopessoa');
  45.        $tipopessoa->addItems(array('Cliente'=> 'Cliente''Fonecedor'=> 'Fonecedor''Colaborador'=> 'Colaborador''Transportador'=> 'Transportador'));
  46.        $fantasiaapelido = new TEntry('fantasiaapelido');
  47.        $rg                 = new TEntry('rg');
  48.        $inscmunicipal    = new TEntry('inscmunicipal');
  49.        $inscestadual    = new TEntry('inscestadual');
  50.        $genero          = new TCombo('genero');
  51.        $genero->addItems(array('Masculino'=> 'Masculino''Feminino'=> 'Feminino'));
  52.        $estadocivil     = new TCombo('estadocivil');
  53.        $estadocivil->addItems(array('Solteiro'=> 'Solteiro''Casado'=> 'Casado''Separado'=> 'Separado''Divorciado'=> 'Divorciado'));
  54.        $nascimento        = new TDate('nascimento');
  55.        $nacionalidade    = new TEntry('nacionalidade');
  56.        $ieisento        = new TCombo('ieisento');
  57.        $ieisento->addItems(array('SIM'=> 'SIM''NÂO'=> 'NÂO'));
  58.        $suframa            = new TEntry('suframa');
  59.        $fonefixo        = new TEntry('fonefixo');
  60.        $fonefixo->setMask('(99)9999-9999');
  61.        $fonecelular        = new TEntry('fonecelular');
  62.        $fonecelular->setMask('(99)99999-9999');
  63.        $fonewhatsapp    = new TEntry('fonewhatsapp');
  64.        $fonewhatsapp->setMask('(99)99999-9999');
  65.        $email            = new TEntry('email');
  66.        $enderecocobranca= new TCombo('enderecocobranca');
  67.        $enderecocobranca->addItems(array('principal'=> 'USAR ENDEREÇO PRINCIPAL''cobranca'=> 'DIGITE ABAIXO O ENDEREÇO DE COBRANÇA'));
  68.        $enderecocobranca->setValue('principal');
  69.        $cep                = new TEntry('cep');
  70.        $cep->setMask('99.999-999');
  71.        $logradouro        = new TEntry('logradouro');
  72.        $bairro            = new TEntry('bairro');
  73.        $numero            = new TEntry('numero');
  74.        $complemento        = new TEntry('complemento');
  75.        $cidade            = new TEntry('cidade');
  76.        $uf                = new TCombo('uf');         
  77.        $itensUF = array ();
  78.        $itensUF['AC'] = 'AC';
  79.        $itensUF['AL'] = 'AL';
  80.        $itensUF['AM'] = 'AM';
  81.        $itensUF['AP'] = 'AP';
  82.        $itensUF['BA'] = 'BA';
  83.        $itensUF['CE'] = 'CE';
  84.        $itensUF['DF'] = 'DF';
  85.        $itensUF['ES'] = 'ES';
  86.        $itensUF['GO'] = 'GO';
  87.        $itensUF['MA'] = 'MA';
  88.        $itensUF['MT'] = 'MT';
  89.        $itensUF['MS'] = 'MS';
  90.        $itensUF['PA'] = 'PA';
  91.        $itensUF['PB'] = 'PB';
  92.        $itensUF['PE'] = 'PE';
  93.        $itensUF['PI'] = 'PI';
  94.        $itensUF['PR'] = 'PR';
  95.        $itensUF['RJ'] = 'RJ';
  96.        $itensUF['RN'] = 'RN';
  97.        $itensUF['RO'] = 'RO';
  98.        $itensUF['RR'] = 'RR';
  99.        $itensUF['RS'] = 'RS';
  100.        $itensUF['SC'] = 'SC';
  101.        $itensUF['SE'] = 'SE';
  102.        $itensUF['SP'] = 'SP';
  103.        $itensUF['TO'] = 'TO';
  104.        
  105.        $uf->addItems($itensUF);
  106.     
  107.        $obs             = new TText('obs');
  108.        
  109.         $id->setEditable(false);
  110.       
  111.                 
  112.         $this->form->appendPage('BÁSICO');
  113.         $this->form->setFieldSizes('100%');
  114.         
  115.  
  116.         $row $this->form->addFields( [ new TLabel(('Código')), $id ],
  117.                                        [ new TLabel(('Data Cadastro')), $datacadastro ],
  118.                                        [ new TLabel(('Status')), $ativo ],
  119.                                        [ new TLabel(('Motivo')), $motivo ] );
  120.                                        
  121.         $row->layout = ['col-sm-3''col-sm-3''col-sm-3' ,'col-sm-3'];
  122.         
  123.          
  124.         $row $this->form->addFields( [ new TLabel(('Relacionamento')), $tipopessoa ],
  125.                                        [ new TLabel(('CPF')), $cpfcnpj ],
  126.                                        [ new TLabel(('RG / RNE')), $rg ] );
  127.                                        
  128.         $row->layout = ['col-sm-4''col-sm-4''col-sm-4' ];
  129.         
  130.         $row $this->form->addFields( [ new TLabel(('Nome')), $nomerazao ],
  131.                                        [ new TLabel(('Nome Social')), $fantasiaapelido ]);
  132.         $row->layout = ['col-sm-6''col-sm-6'];
  133.     
  134.         $row $this->form->addFields( [ new TLabel(('Gênero')), $genero ],
  135.                                        [ new TLabel(('Nascimento')), $nascimento ],
  136.                                        [ new TLabel(('Estado Civil')), $estadocivil ],
  137.                                        [ new TLabel(('Nacionalidade')), $nacionalidade ]);
  138.         $row->layout = ['col-sm-3''col-sm-3''col-sm-3''col-sm-3'];
  139.         
  140.         $label = new TLabel('Endereço Principal''#7D78B6'10'b');
  141.         $label->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
  142.         $this->form->addContent( [$label] );
  143.         
  144.         $row $this->form->addFields( [ new TLabel(('CEP')), $cep ]);
  145.         $row->layout = ['col-sm-3'];
  146.    
  147.          
  148.         $row $this->form->addFields( [ new TLabel(('Logradouro')), $logradouro ],
  149.                                        [ new TLabel(('Número')), $numero ] );
  150.         $row->layout = ['col-sm-8''col-sm-4'];
  151.         
  152.         $row $this->form->addFields( [ new TLabel(('Bairro')), $bairro ],
  153.                                        [ new TLabel(('complemento')), $complemento ]);
  154.                                       
  155.         $row->layout = ['col-sm-4''col-sm-8'];
  156.         $row $this->form->addFields( [ new TLabel(('cidade')), $cidade ],
  157.                                        [ new TLabel(('UF')), $uf ]);
  158.                                        
  159.         $row->layout = ['col-sm-8''col-sm-4'];
  160.        
  161.         // contatos
  162.         $this->form->appendPage(('CONTATOS'));
  163.         
  164.         $row $this->form->addFields( [ new TLabel(('Telefone Fixo')), $fonefixo ],
  165.                                        [ new TLabel(('Celular')), $fonecelular ],
  166.                                        [ new TLabel(('WhatsApp')), $fonewhatsapp ]);
  167.         $row->layout = ['col-sm-4','col-sm-4','col-sm-4'];
  168.         
  169.         $row $this->form->addFields( [ new TLabel(('email')), $email ]);
  170.                                                                             
  171.         $row->layout = ['col-sm-12'];        
  172.         
  173.         // fiscal
  174.         $this->form->appendPage(('FISCAL'));
  175.         
  176.         $row $this->form->addFields( [ new TLabel(('I.E. Insento')), $ieisento ]);
  177.         $row->layout = ['col-sm-4'];
  178.         
  179.         $row $this->form->addFields( [ new TLabel(('Suframa')), $suframa ]);
  180.                                                                             
  181.         $row->layout = ['col-sm-6'];
  182.         
  183.         
  184.         // financeiro
  185.         $this->form->appendPage(('FINANCEIRO'));
  186.         
  187.         
  188.         
  189.         // observacoes
  190.         $this->form->appendPage(('OBSERVAÇÕES'));
  191.         
  192.         $row $this->form->addFields( [ new TLabel(('Observação')), $obs ]);
  193.         $row->layout = ['col-sm-12'];
  194.             
  195.         
  196.         $btn $this->form->addAction'Salvar', new TAction(array($this'onSave')), 'fa:save' );
  197.         $btn->class 'btn btn-sm btn-primary';
  198.         
  199.         $exit_action = New TAction(array($this'onCep'));
  200.         $cep->setExitAction($exit_action);
  201.         $this->form->addAction(('Retornar Listagem'),  new TAction(array('CadastroPessoasList''onReload')), 'bs:plus-sign green');
  202.         $this->form->addAction'Limpar Formulário', new TAction(array($this'onClear')), 'fa:eraser red' );
  203.         
  204.     
  205.         $container = new TVBox;
  206.         $container->style 'width: 100%';
  207.         $container->add(new TXMLBreadCrumb('menu.xml''CadastroPessoasList'));
  208.         $container->add($this->form);
  209.         
  210.         // add the form inside the page
  211.         parent::add($container);
  212.     }
  213.     
  214.     
  215.     public static function onChangeStatus($param)
  216.     {
  217.         if ($param['motivo'] == 'Falta Pagamento')
  218.         {
  219.             
  220.             $ativo->setValue('BLOQUEADO');
  221.         }
  222.        TForm::sendData('form_cadastropessoas'$obj);
  223.         
  224.     
  225.     }
  226.     
  227.     
  228.     public function onSave()
  229.     {
  230.         try
  231.         {
  232.             TTransaction::open('CadastroPessoas');
  233.                 $object $this->form->getData('CadastroPessoasModel');
  234.                 //var_dump($object);
  235.                 $object->store();
  236.                 $this->form->setData$object );
  237.                 new TMessage('info''Registro salvo com sucesso!');
  238.             TTransaction::close();
  239.         }
  240.         catch (exception $e)
  241.         {
  242.             new TMessage('error'$e->getMessage());
  243.             TTransaction::rollback();
  244.         }
  245.         
  246.         
  247.     }
  248.     
  249.     public function onEdit($param)
  250.     {
  251.         try
  252.         {
  253.             TTransaction::open('CadastroPessoas');
  254.                 $key $param['key'];
  255.                    $object = new CadastroPessoasModel ($key);
  256.                 $this->form->setData ($object);
  257.              TTransaction::close();
  258.         }
  259.         catch (exception $e)
  260.         {
  261.             new TMessage('error'$e->getMessage());
  262.             TTransaction::rollback();
  263.         }
  264.         
  265.         
  266.     }
  267.     
  268.     public function onClear()
  269.     {
  270.         $this->form->clear();
  271.         
  272.     }
  273.     
  274.         
  275.     public static function onCep($param)
  276.     {        
  277.         $cep $param['cep'];
  278.         if (!empty($cep)) 
  279.         {
  280.             try
  281.             {
  282.                     $resultado = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($param['cep']).'&formato=query_string');  
  283.                     if(!$resultado){  
  284.                         $resultado "&resultado=0&resultado_txt=erro+ao+buscar+cep";  
  285.                     }  
  286.                     parse_str($resultado$retorno);   
  287.                     $obj = new StdClass;
  288.                     $obj->cep      $param['cep'];
  289.                     $obj->logradouro strtoupper$retorno['tipo_logradouro'].' '.$retorno['logradouro']);
  290.                     $obj->bairro   strtoupper$retorno['bairro']);
  291.                     $obj->cidade   strtoupper$retorno['cidade']);
  292.                     $obj->uf       strtoupper$retorno['uf']);
  293.                     var_dump($retorno);        
  294.                     TForm::sendData('form_cadastropessoas'$obj);
  295.             }
  296.             catch (Exception $e)
  297.             {
  298.                 new TMessage('error','CEP não encontrado');
  299.             }
  300.         }
  301.         else
  302.         {
  303.             new TMessage('alert''Informe o CEP');
  304.         }
  305.     }   
  306.         
  307. }