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(1000000, 9999999);
  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. $this->cep = new TEntry('cep[]');
  64. $this->cep->setMask('00000-000');
  65. $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));
  66. $logradouro = new TEntry('logradouro[]');
  67. $bairro = new TEntry('bairro[]');
  68. $cidade = new TEntry('cidade[]');
  69. $uf = new TEntry('uf[]');
  70. $numero = new TEntry('numero[]');
  71. $tipo_endereco_id = new TDBCombo('tipo_endereco_id[]','centinel','TipoEndereco','id','descricao');
  72. $tipo_endereco_id->setDefaultOption(false);
  73. $complemento = new TEntry('complemento[]');
  74. // set row counter
  75. $this->cep->{'data-row'} = $this->detail_row_1;
  76. $logradouro->{'data-row'} = $this->detail_row_1;
  77. $bairro->{'data-row'} = $this->detail_row_1;
  78. $cidade->{'data-row'} = $this->detail_row_1;
  79. $numero->{'data-row'} = $this->detail_row_1;
  80. $uf->{'data-row'} = $this->detail_row_1;
  81. $tipo_endereco_id->{'data-row'} = $this->detail_row_1;
  82. $complemento->{'data-row'} = $this->detail_row_1;
  83. //set ids
  84. $this->cep->setId('cep_'.$uniqid);
  85. $btn_cep->setId('btn_cep)'.$uniqid);
  86. $logradouro->setId('logradouro_'.$uniqid);
  87. $bairro->setId('bairro_'.$uniqid);
  88. $cidade->setId('cidade_'.$uniqid);
  89. $uf->setId('uf_'.$uniqid);
  90. $numero->setId('numero_'.$uniqid);
  91. $tipo_endereco_id->setId('tipo_endereco_id_'.$uniqid);
  92. $complemento->setId('complemento_'.$uniqid);
  93. // create delete button
  94. $del_endereco = new TImage('fa:trash-o blue');
  95. $del_endereco->onclick = 'ttable_remove_row(this)';
  96. $row_end = $this->table_endereco->addRowSet([$this->cep,$btn_cep,$logradouro,$bairro,$cidade,$uf,$tipo_endereco_id,$numero,$complemento,$del_endereco]);
  97. $row_end->{'data-row'} = $this->detail_row_1;
  98. $this->cep->setSize('70');
  99. $logradouro->setSize('200');
  100. $bairro->setSize('150');
  101. $cidade->setSize('150');
  102. $uf->setSize('40');
  103. $numero->setSize('70');
  104. $complemento->setSize('150');
  105. $tipo_endereco_id->setSize('100');
  106. $this->detail_row_1 ++;
  107. }
  108. public static function BuscaCep($Cep)
  109. {
  110. $Cep = preg_replace("/D/","", $Cep);
  111. if ($Cep != "")
  112. {
  113. $resultado = simplexml_load_string( @file_get_contents("http://viacep.com.br/ws/".$Cep."/xml/"));
  114. $erro = (string) $resultado->erro;
  115. if ( !$erro )
  116. {
  117. $objects['cep'] = (string) $resultado->cep;
  118. $objects['ibge'] = (string) $resultado->ibge;
  119. $objects['gia'] = (string) $resultado->gia;
  120. $objects['logradouro'] = (string) $resultado->logradouro;
  121. $objects['complemento'] = (string) $resultado->complemento;
  122. $objects['bairro'] = (string) $resultado->bairro;
  123. $objects['localidade'] = (string) $resultado->localidade;
  124. $objects['uf'] = (string) $resultado->uf;
  125. $objects['unidade'] = (string) $resultado->unidade;
  126. return $objects;
  127. } else return FALSE;
  128. } else return FALSE;
  129. }
  130. ?>

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

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.