Carregar TFieldList Olá pessoal, Tenho a seguinte situação conforme código abaixo. Os dados são retornados porém, só esta carregando o primeiro ( operadora). ...
RB
Carregar TFieldList  
Olá pessoal,

Tenho a seguinte situação conforme código abaixo. Os dados são retornados porém, só esta carregando o primeiro ( operadora).


 
  1. <?php
  2. // ....Outros códigos
  3. //Cria campos dos telefones
  4. $ddi = new TEntry('ddi[]');
  5. $ddd = new TEntry('ddd[]');
  6. $telefone = new TEntry('telefone[]');
  7. $operadora = new TEntry('operadora[]');
  8. $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]', self::$database, 'TipoTelefone', 'id', 'nome');
  9. $portabilidade = new TEntry('portabilidade[]');
  10. $uf_operadora = new TEntry('uf_operadora[]');
  11. $regiao_operadora = new TEntry('regiao_operadora[]');
  12. $telefone->setExitAction(new TAction(array(__CLASS__,'onTelefone')));
  13. $ddi->setValue('55');
  14. $ddi->setMask('99');
  15. $ddd->setValue('11');
  16. $ddd->setMask('999');
  17. $ddi->style = 'text-align: center';
  18. $ddd->style = 'text-align: center';
  19. $telefone->style = 'text-align: right';
  20. $ddi->setSize('100%');
  21. $ddd->setSize('100%');
  22. $telefone->setSize('100%');
  23. $operadora->setSize('100%');
  24. $uf_operadora->setSize('100%');
  25. $portabilidade->setSize('100%');
  26. $regiao_operadora->setSize('100%');
  27. $tipo_telefone_id->setSize('100%');
  28. //$telefone->setMask('9999-9999');
  29. $this->form->addField($ddi);
  30. $this->form->addField($ddd);
  31. $this->form->addField($telefone);
  32. $this->form->addField($operadora);
  33. $this->form->addField($uf_operadora);
  34. $this->form->addField($portabilidade);
  35. $this->form->addField($tipo_telefone_id);
  36. $this->form->addField($regiao_operadora);
  37. // detail
  38. $this->telefones_list = new TFieldList;
  39. $this->telefones_list->generateAria();
  40. $this->telefones_list->width = '100%';
  41. $this->telefones_list->class .= ' dashed'; // important
  42. $this->telefones_list->name = 'telefones_list';
  43. //$this->telefones_list->enableSorting();
  44. $this->telefones_list->addField('<b>DDI</b>',$ddi ,['width' => '35px']);
  45. $this->telefones_list->addField('<b>DDD</b>',$ddd , ['width' => '35px']);
  46. $this->telefones_list->addField('<b>Número</b>',$telefone,['width' => '10%']);
  47. $this->telefones_list->addField('<b>Operadora</b>',$operadora, ['width' => '15%']);
  48. $this->telefones_list->addField('<b>Tipo</b>',$tipo_telefone_id, ['width' => '10%']);
  49. $this->telefones_list->addField('<b>UF</b>',$uf_operadora, ['width' => '20%']);
  50. $this->telefones_list->addField('<b>Região</b>',$regiao_operadora, ['width' => '20%']);
  51. $this->telefones_list->addField('<b>Portabilidade</b>',$portabilidade, ['width' => '10%']);
  52. // add field list to the form
  53. //$this->form->addContent([ $this->telefones_list ] );
  54. $row = $this->form->addFields([$this->telefones_list]);
  55. $row->layout = ['col-sm-12'];
  56. public static function onTelefone($param)
  57. {
  58. try
  59. {
  60. $input_id = $param['_field_id'];
  61. $value = $param['_field_value'];
  62. $input_pieces = explode('_', $input_id);
  63. $unique_id = end($input_pieces);
  64. if ($retorno = (object)FuncoesUteis::onPesqTelefone($value))
  65. {
  66. $obj = new StdClass;
  67. $obj->{'operadora_'.$unique_id} = $retorno->operadora;
  68. if(strcmp($retorno->tipo,'Celular'))
  69. {
  70. $obj->{'tipo_'.$unique_id} = 2;
  71. }else{
  72. $obj->{'tipo_'.$unique_id} = 1;
  73. }
  74. $obj->{'portabilidade'.$unique_id} = $retorno->portabilidade;
  75. $obj->{'uf_operadora'.$unique_id} = $retorno->estado;
  76. $obj->{'regiao_operadora'.$unique_id} = $retorno->regiao;
  77. TForm::sendData(self::$formName, $obj, false, false);
  78. //TScript::create('setTimeout(function() { $("input[name=\'numero\']").focus() }, 1000);');
  79. echo '<pre>';print_r($retorno);echo '</pre>';
  80. }
  81. else
  82. {
  83. new TMessage("error", 'Número - '.$value.' Inválido');
  84. }
  85. }
  86. catch (Exception $e){
  87. new TMessage('error', $e->getMessage());
  88. }
  89. }
  90. //não sei se esta é a melhor forma, porém consegui pegar os dados que preciso
  91. public static function onPesqTelefone($param)
  92. {
  93. if (isset($param))
  94. {
  95. $link = 'https://qualoperadora.info/consulta';
  96. $dados = array
  97. (
  98. 'tel'=> preg_replace('/[^0-9]/','',$param)
  99. );
  100. $dados = http_build_query($dados,null,"");
  101. $ch = curl_init($link);
  102. curl_setopt($ch, CURLOPT_REFERER, $link);
  103. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  104. curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
  105. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  106. curl_setopt($ch, CURLOPT_POST, true);
  107. curl_setopt($ch,CURLOPT_POSTFIELDS, $dados);
  108. $html = curl_exec($ch);
  109. //$txt = preg_split("/:/", $html);
  110. $re = '/alt="\w+./m';
  111. preg_match_all($re, $html, $obj, PREG_SET_ORDER, 0);
  112. $txt = str_replace(['alt=',''],['',''], $obj[0]);
  113. $operadora = str_replace('"','',$txt);
  114. //return $html;
  115. preg_match_all('/<([^-->]+)>(.*)<\/\1>/U',$html, $matches);
  116. if ($matches)
  117. {
  118. $portabilidade = preg_split("/:/", $matches[2][3]);
  119. $portabilidade = strip_tags($portabilidade[1]);
  120. $uf_operadora = preg_split("/:/", $matches[2][4]);
  121. $uf_operadora = strip_tags($uf_operadora[1]);
  122. $regiao_operadora = preg_split("/:/", $matches[2][5]);
  123. $regiao_operadora =strip_tags($regiao_operadora[1]);
  124. //$object['numero'] = $matches[0][1];
  125. $object['operadora'] = $operadora[0];
  126. $object['tipo'] = $matches[2][2];
  127. $object['portabilidade'] = $portabilidade;
  128. $object['estado'] = $uf_operadora;
  129. $object['regiao'] = $regiao_operadora;
  130. }
  131. return $object;
  132. //exit();
  133. curl_close($ch);
  134. }
  135. }
  136. ?>

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


NR

Os atributos do objeto enviado ao sendData estão errados. O padrão é nomedocampo + "_" + uniqueid, da mesma forma que fez para o campo operadora. Ex:
 
  1. <?php
  2. //$obj->{'portabilidade'.$unique_id} = $retorno->portabilidade;
  3. $obj->{'portabilidade_'.$unique_id} = $retorno->portabilidade;
  4. ?>
RB

Nataniel,

Muito obrigado, repassei varias vezes este código, e não consegui enchergar este detalhe.

Funcionou, mais uma vez obrigado.