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);

}
}

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)


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