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

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 (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.