Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Campos multi values não é preenchido Ola, Criei um formulário com campos multi values( Endereços) porém os campos não são preenchidos com retorno do método ( onCep), não estou conseguindo identificar o erro, se alguém puder me ajudar agradeço. Segue código abaixo. ...
RB
Campos multi values não é preenchido  
Ola,

Criei um formulário com campos multi values( Endereços) porém os campos não são preenchidos com retorno do método ( onCep), não estou conseguindo identificar o erro, se alguém puder me ajudar agradeço.

Segue código abaixo.

  1. <?php
  2. public function __construct($param){
  3.         parent::__construct($param);
  4.         parent::include_css('app/resources/builder.css');
  5.         $this->form = new BootstrapFormBuilder('frm_cliente_fisico');
  6.         $this->form->setFormTitle('Cliente');
  7.         $this->form->class='frm_cliente_fisico';
  8.   //cria dados de correspondência
  9.         $lbl_endereco = new TLabel('Endereco');
  10.         $lbl_endereco->class='lbl_titulo';
  11.         $lbl_cep = new TLabel('Cep');
  12.         //$this->cep = new TEntry('cep');
  13.         $lbl_logradouro = new TLabel('Logradouro');
  14.         $lbl_bairro = new TLabel('Bairro');        
  15.         $lbl_cidade = new TLabel('Cidade');        
  16.         $lbl_uf = new TLabel('UF');
  17.         $lbl_tipo_endereco_id = new TLabel('Tipo Endereco');
  18.         $lbl_numero = new TLabel('Número'); 
  19.         $lbl_complemento = new TLabel('Complemento');
  20.         $this->detail_row_1 0;
  21.         $this->table_endereco = new TTable();
  22.         $this->table_endereco->width='100%';
  23.         $this->table_endereco->addSection('thead');
  24.         $this->frame_endereco = new TFrame;
  25.         $this->frame_endereco->style='border:none;float:lef; margin-left:-15px;';
  26.         $this->frame_endereco->add($lbl_endereco);
  27.         $this->frame_endereco->add($this->table_endereco);
  28.         $this->table_endereco->addRowSet([$lbl_cep,$lbl_logradouro,$lbl_bairro,$lbl_cidade,$lbl_uf,$lbl_tipo_endereco_id,$lbl_numero,$lbl_complemento]);
  29.         $this->form->addContent([$this->frame_endereco]);
  30.  //method onCep()
  31.     public static function onCep($param){
  32.         $endereco_cep $param['cep_'];
  33.         $endereco_cep explode('_'$endereco_cep);
  34.         $unique_id end($input_pieces);
  35.         $endereco Endereco::BuscaCep($endereco_cep);
  36.         if (!empty($endereco ))
  37.         {
  38.             $response = new stdClass;
  39.             $response->{'logradouro_'.$unique_id} = strtoupper$endereco['logradouro']);
  40.             $response->{'bairro_'.$unique_id}     = $endereco['bairro'];
  41.             $response->{'cidade_'.$unique_id}     = $endereco['localidade'];
  42.             $response->{'uf_'.$unique_id}         = $endereco['uf'];
  43.             //$obj->logradouro = strtoupper( $retorno['logradouro']);
  44.             //$obj->bairro     = strtoupper( $retorno['bairro']);
  45.             //$obj->cidade     = strtoupper( $retorno['localidade']);
  46.             //$obj->uf         = strtoupper( $retorno['uf']);
  47.             //$obj->ibge       = strtoupper( $retorno['ibge']);
  48.             //$obj->gia        = strtoupper( $retorno['gia']);
  49.             TForm::sendData('frm_cliente_fisico'$response);
  50.             TScript::create('$("input[name=numero]").focus();');
  51.         }
  52.         else {
  53.             new TMessage("error""CEP - Em Branco ou Inválido");
  54.         }
  55.     }
  56. public function addEnderecoRow($param){
  57.         $uniqid mt_rand(10000009999999);
  58.         $btn_cep = new TButton('btn_cep');
  59.         $btn_cep->setSize(42);
  60.         $btn_cep->setAction(new TAction(array($this,'onCep')),'');
  61.         $btn_cep->setImage('fa:search blue');
  62.         $this->form->addFields([$btn_cep]);
  63.         
  64.         $this->cep = new TEntry('cep[]');
  65.         $this->cep->setMask('00000-000');
  66.         $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));        
  67.         $logradouro         = new TEntry('logradouro[]');        
  68.         $bairro             = new TEntry('bairro[]');        
  69.         $cidade             = new TEntry('cidade[]');        
  70.         $uf                 = new TEntry('uf[]');        
  71.         $numero             = new TEntry('numero[]');        
  72.         $tipo_endereco_id   = new TDBCombo('tipo_endereco_id[]','centinel','TipoEndereco','id','descricao');
  73.         $tipo_endereco_id->setDefaultOption(false);        
  74.         $complemento        = new TEntry('complemento[]');       
  75.         // set row counter
  76.         $this->cep->{'data-row'}        = $this->detail_row_1;
  77.         $logradouro->{'data-row'}       = $this->detail_row_1;
  78.         $bairro->{'data-row'}           = $this->detail_row_1;
  79.         $cidade->{'data-row'}           = $this->detail_row_1;
  80.         $numero->{'data-row'}           = $this->detail_row_1;
  81.         $uf->{'data-row'}               = $this->detail_row_1;
  82.         $tipo_endereco_id->{'data-row'} = $this->detail_row_1;
  83.         $complemento->{'data-row'}      = $this->detail_row_1;
  84.         //set ids
  85.         $this->cep->setId('cep_'.$uniqid);
  86.         $btn_cep->setId('btn_cep)'.$uniqid);
  87.         $logradouro->setId('logradouro_'.$uniqid);
  88.         $bairro->setId('bairro_'.$uniqid);
  89.         $cidade->setId('cidade_'.$uniqid);
  90.         $uf->setId('uf_'.$uniqid);
  91.         $numero->setId('numero_'.$uniqid);
  92.         $tipo_endereco_id->setId('tipo_endereco_id_'.$uniqid);
  93.         $complemento->setId('complemento_'.$uniqid);
  94.          // create delete button
  95.         $del_endereco = new TImage('fa:trash-o blue');
  96.         $del_endereco->onclick 'ttable_remove_row(this)';        
  97.         $row_end $this->table_endereco->addRowSet([$this->cep,$btn_cep,$logradouro,$bairro,$cidade,$uf,$tipo_endereco_id,$numero,$complemento,$del_endereco]);
  98.         $row_end->{'data-row'} = $this->detail_row_1;        
  99.         $this->cep->setSize('70');  
  100.         $logradouro->setSize('200');
  101.         $bairro->setSize('150');
  102.         $cidade->setSize('150');
  103.         $uf->setSize('40');
  104.         $numero->setSize('70');
  105.         $complemento->setSize('150');
  106.         $tipo_endereco_id->setSize('100');
  107.         $this->detail_row_1 ++;
  108.     }
  109.     public static function BuscaCep($Cep)
  110.   {
  111.     $Cep preg_replace("/D/",""$Cep);
  112.     if ($Cep != "")
  113.       {
  114.         $resultado simplexml_load_string( @file_get_contents("http://viacep.com.br/ws/".$Cep."/xml/"));
  115.         $erro = (string) $resultado->erro;
  116.         if ( !$erro )
  117.         {
  118.           $objects['cep']         = (string) $resultado->cep;
  119.           $objects['ibge']        = (string) $resultado->ibge;
  120.           $objects['gia']         = (string) $resultado->gia;
  121.           $objects['logradouro']  = (string) $resultado->logradouro;
  122.           $objects['complemento'] = (string) $resultado->complemento;
  123.           $objects['bairro']      = (string) $resultado->bairro;
  124.           $objects['localidade']  = (string) $resultado->localidade;
  125.           $objects['uf']          = (string) $resultado->uf;
  126.           $objects['unidade']     = (string) $resultado->unidade;
  127.           return $objects;
  128.         } else return FALSE;
  129.       } else return FALSE;
  130.     }
  131. ?>

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


NR

Rubens, habilite a visualização de logs do PHP, você vai ver vários notices que ajudam a identificar os problemas.

Como você está usando master detail vetorial, aconselho a utilizar a função setExitAction diretamente no campo CEP, ao invés de ter um botão para preencher os dados. Usando a exitAction você consegue obter o id e o valor do campo, algo que seria mais complicado de obter utilizando o botão.

Faça a troca para usar setExitAction no campo cep e deixe sua função onCep da seguinte maneira:
  1. <?php
  2. public static function onCep($param){
  3.         $endereco_cep $param['_field_id'];
  4.         $endereco_cep explode('_'$endereco_cep);
  5.         $unique_id end($endereco_cep);
  6.         $endereco self::BuscaCep($param['_field_value']);
  7.         ...
  8. ?>
RB

Nataniel Rabaioli,

Mais uma vez, muito obrigado .

Funcionou perfeito .

Abraço.