Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TForm::sendData não envia dados do cep para tela Pessoal... Por favor me ajude a entender porque o TForm::sendData não envia os dados do cep para a tela!!! segue o fonte comando na linha 358. class EnderecoForm extends TPage { protected $form; // form protected $detail_row; protected $fieldlist; static $id_ent; // Creates the page and the registration form function __construct() { ...
AT
TForm::sendData não envia dados do cep para tela  
Pessoal...

Por favor me ajude a entender porque o TForm::sendData não envia os dados do cep para a tela!!! segue o fonte comando na linha 358.


class EnderecoForm extends TPage
{
protected $form; // form
protected $detail_row;
protected $fieldlist;
static $id_ent;


// Creates the page and the registration form

function __construct()
{
parent::__construct();

// creates the form

$this->form = new TForm('form_endereco');

// cria fieldlist

$this->fieldlist = new TFieldList;
$this->fieldlist->width = '100%';
$this->fieldlist->name = 'fdlEndereco';
$this->form->add($this->fieldlist);
//$fieldlist->setRemoveFunction('onDelete');

//TFieldList::clear('fdlEndereco');
//TFieldList::addRows('fdlEndereco', 1);

// define campos

$id = new THidden('list_id[]');
$enderecos_id = new TDBCombo('list_enderecos_id[]', 'setcis', 'Enderecos', 'id', 'descricao');
$cep = new TEntry('list_cep[]');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$logradouros_id = new TDBCombo('list_logradouros_id[]', 'setcis', 'Logradouros', 'id', 'descricao', 'descricao asc');
$endereco = new TEntry('list_endereco[]');
$numero = new TEntry('list_numero[]');
$complemento = new TEntry('list_complemento[]');
$bairro = new TEntry('list_bairro[]');
$cidade_id = new TDBCombo('list_cidade_id[]', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
$estado_id = new TDBCombo('list_estado_id[]', 'setcis', 'estado', 'id', 'sigla', 'sigla asc');
$entidade_id = new THidden('list_entidade_id[]', 'setcis', 'Entidade', 'id', 'nome');
$actEnd = new TCombo('action');

// validações

$enderecos_id->addValidation('Tipo', new TRequiredValidator);
$cep->addValidation('Cep', new TRequiredValidator);
$logradouros_id->addValidation('Logradouro', new TRequiredValidator);
$endereco->addValidation('Endereço', new TRequiredValidator);
$numero->addValidation('Número', new TRequiredValidator);
$complemento->addValidation('Complemento', new TRequiredValidator);
$bairro->addValidation('Bairro', new TRequiredValidator);
$cidade_id->addValidation('Cidade', new TRequiredValidator);
$estado_id->addValidation('Estado', new TRequiredValidator);

// Tamanhos

$enderecos_id->setSize('100%');
$cep->setSize('100%');
$logradouros_id->setSize('100%');
$endereco->setSize('100%');
$numero->setSize('100%');
$complemento->setSize('100%');
$bairro->setSize('100%');
$cidade_id->setSize('100%');
$estado_id->setSize('100%');
$actEnd->setSize('100%');

// define ações

$items = ['1'=>'Salvar', '2'=>'Excluir'];
$actEnd->addItems($items);
$actEnd->setValue('1');

$cep->setExitAction(new TAction(array($this, 'onCep')));

$change_action = new TAction(array($this, 'onDefine'));
$actEnd->setChangeAction($change_action);

// monta fieldlist

$this->fieldlist->addField( '', $id);
$this->fieldlist->addField( 'Tipo', $enderecos_id);
$this->fieldlist->addField( 'Cep', $cep);
$this->fieldlist->addField( 'Logradouro', $logradouros_id);
$this->fieldlist->addField( 'Endereço', $endereco);
$this->fieldlist->addField( 'Número', $numero);
$this->fieldlist->addField( 'Complemento', $complemento);
$this->fieldlist->addField( 'Bairro', $bairro);
$this->fieldlist->addField( 'Cidade', $cidade_id);
$this->fieldlist->addField( 'Estado', $estado_id);
$this->fieldlist->addField( '', $entidade_id);
$this->fieldlist->addField( 'Salvar/Excluir', $actEnd);

// adiciona campos no form

$this->form->addField($id);
$this->form->addField($enderecos_id);
$this->form->addField($cep);
$this->form->addField($logradouros_id);
$this->form->addField($endereco);
$this->form->addField($numero);
$this->form->addField($complemento);
$this->form->addField($bairro);
$this->form->addField($cidade_id);
$this->form->addField($estado_id);
$this->form->addField($entidade_id);
$this->form->addField($actEnd);

// create the page container

$container = new TVBox;
$container->style = 'width: 100%';
$container->add($this->form);

parent::add($container);
}

// metodo show() - mostra os dados na pagina

public function show()
{
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
{
$this->onLoad(0);
}
parent::show();
}

// Clear form

public function onClear($param)
{
$this->fieldlist->addHeader();
}

// metodo carga do fieldlist

function onLoad($param)
{
try
{
TTransaction::open('setcis');

$id_ent = TSession::getValue('id_entidade');

$objEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();

$this->fieldlist->addHeader();

if ($objEndereco)
{
foreach ($objEndereco as $end)
{
$objForm = new stdClass;
$objForm->list_id = $end->id;
$objForm->list_enderecos_id = $end->enderecos_id;
$objForm->list_cep = $end->cep;
$objForm->list_logradouros_id = $end->logradouros_id;
$objForm->list_endereco = $end->endereco;
$objForm->list_numero = $end->numero;
$objForm->list_complemento = $end->complemento;
$objForm->list_bairro = $end->bairro;
$objForm->list_cidade_id = $end->cidade_id;
$objForm->list_estado_id = $end->estado_id;

$row = $this->fieldlist->addDetail($objForm);
$row->del($row->get(count($row->getChildren())-1));
}

$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
else
{
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}

TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());

TTransaction::rollback();
}
}

public static function onDefine($param)
{
$opcao = $param['key'];

if($opcao == '1')
{
AdiantiCoreApplication::loadPage(__CLASS__, 'onSave', $param);
}
else
{
$action = new TAction([__CLASS__, 'onDelete']);
$action->setParameters($param);

new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
}

}

// method onSave

public function onSave($param)
{
try
{
// captura o indice e id

parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];

TTransaction::open('setcis');

//$this->form->validate();

if($id_end > 0)
{
$objEndereco = new EntidadeEndereco($id_end);
}
else
{
$objEndereco = new EntidadeEndereco;
$objEndereco->entidade_id = TSession::getValue('id_entidade');

}
$objEndereco->enderecos_id = $param['list_enderecos_id'][$indice];
$objEndereco->cep = $param['list_cep'][$indice];
$objEndereco->logradouros_id = $param['list_logradouros_id'][$indice];
$objEndereco->endereco = $param['list_endereco'][$indice];
$objEndereco->numero = $param['list_numero'][$indice];
$objEndereco->complemento = $param['list_complemento'][$indice];
$objEndereco->bairro = $param['list_bairro'][$indice];
$objEndereco->cidade_id = $param['list_cidade_id'][$indice];
$objEndereco->estado_id = $param['list_estado_id'][$indice];
$objEndereco->store();

TTransaction::close();

//$ret = array_pop($fieldlist ['list_id']);
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}

// method delete endereço

public function onDelete($param)
{
try
{
// captura o indice e id

parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];

TTransaction::open('setcis');

if($id_end > 0)
{
$tabEndereco = new EntidadeEndereco($id_end);
$tabEndereco->delete();
}

TTransaction::close();

$this->onLoad(0);

}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());

TTransaction::rollback();
}
}

// method busca cep



public static function onCep($param = null)
{
try
{
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];

$input_id = $param['_field_id'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);

$retorno = ConsultaCepService::getCep($param['key'], 'json');

$from = 'àáãâéêíóõôúüç';
$to = 'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';

if( isset($retorno->erro) )
{
throw new Exception($retorno->mensagem);
}
else
{
TTransaction::open('setcis');

$logra = explode(' ', strtoupper($retorno->logradouro));

$end = '';
$logEnd = strtr($logra[0], $from, $to);

foreach ($logra as $i => $value) if ($i != 0) $end = $end . strtr($logra[$i], $from, $to) . ' ';

$objCep = new StdClass;
$objCep->{'enderecos_id_'.$unique_id} = $param['list_enderecos_id'][$indice];
$objCep->{'cep_'.$unique_id} = $retorno->cep;

$logradouro = logradouros::where('descricao', '=', $logEnd)->load();
foreach ($logradouro as $logradouros) $objCep->{'logradouros_id_'.$unique_id} = $logradouros->id;

$objCep->{'endereco_'.$unique_id} = trim($end);
$objCep->{'bairro_'.$unique_id} = strtoupper(strtr($retorno->bairro, $from, $to));

$municipios = municipio::where('nome', '=', strtoupper(strtr($retorno->localidade, $from, $to)))->load();
foreach ($municipios as $municipio) $objCep->{'cidade_id_'.$unique_id} = $municipio->id;

$estados = estado::where('sigla', '=', strtoupper($retorno->uf))->load();
foreach ($estados as $estado) $objCep->{'estado_id_'.$unique_id} = $estado->id;

//$objCep->{'ibge_'.$unique_id} = $retorno->ibge;

TTransaction::close();

var_dump($objCep);

TForm::sendData('form_endereco', $objCep);
}
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
}
?>



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


AT

class EnderecoForm extends TPage
{
protected $form; // form
protected $detail_row;
protected $fieldlist;
static $id_ent;


// Creates the page and the registration form

function __construct()
{
parent::__construct();

// creates the form

$this->form = new TForm('form_endereco');

// cria fieldlist

$this->fieldlist = new TFieldList;
$this->fieldlist->width = '100%';
$this->fieldlist->name = 'fdlEndereco';
$this->form->add($this->fieldlist);
//$fieldlist->setRemoveFunction('onDelete');

//TFieldList::clear('fdlEndereco');
//TFieldList::addRows('fdlEndereco', 1);

// define campos

$id = new THidden('list_id[]');
$enderecos_id = new TDBCombo('list_enderecos_id[]', 'setcis', 'Enderecos', 'id', 'descricao');
$cep = new TEntry('list_cep[]');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$logradouros_id = new TDBCombo('list_logradouros_id[]', 'setcis', 'Logradouros', 'id', 'descricao', 'descricao asc');
$endereco = new TEntry('list_endereco[]');
$numero = new TEntry('list_numero[]');
$complemento = new TEntry('list_complemento[]');
$bairro = new TEntry('list_bairro[]');
$cidade_id = new TDBCombo('list_cidade_id[]', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
$estado_id = new TDBCombo('list_estado_id[]', 'setcis', 'estado', 'id', 'sigla', 'sigla asc');
$entidade_id = new THidden('list_entidade_id[]', 'setcis', 'Entidade', 'id', 'nome');
$actEnd = new TCombo('action');

// validações

$enderecos_id->addValidation('Tipo', new TRequiredValidator);
$cep->addValidation('Cep', new TRequiredValidator);
$logradouros_id->addValidation('Logradouro', new TRequiredValidator);
$endereco->addValidation('Endereço', new TRequiredValidator);
$numero->addValidation('Número', new TRequiredValidator);
$complemento->addValidation('Complemento', new TRequiredValidator);
$bairro->addValidation('Bairro', new TRequiredValidator);
$cidade_id->addValidation('Cidade', new TRequiredValidator);
$estado_id->addValidation('Estado', new TRequiredValidator);

// Tamanhos

$enderecos_id->setSize('100%');
$cep->setSize('100%');
$logradouros_id->setSize('100%');
$endereco->setSize('100%');
$numero->setSize('100%');
$complemento->setSize('100%');
$bairro->setSize('100%');
$cidade_id->setSize('100%');
$estado_id->setSize('100%');
$actEnd->setSize('100%');

// define ações

$items = ['1'=>'Salvar', '2'=>'Excluir'];
$actEnd->addItems($items);
$actEnd->setValue('1');

$cep->setExitAction(new TAction(array($this, 'onCep')));

$change_action = new TAction(array($this, 'onDefine'));
$actEnd->setChangeAction($change_action);

// monta fieldlist

$this->fieldlist->addField( '', $id);
$this->fieldlist->addField( 'Tipo', $enderecos_id);
$this->fieldlist->addField( 'Cep', $cep);
$this->fieldlist->addField( 'Logradouro', $logradouros_id);
$this->fieldlist->addField( 'Endereço', $endereco);
$this->fieldlist->addField( 'Número', $numero);
$this->fieldlist->addField( 'Complemento', $complemento);
$this->fieldlist->addField( 'Bairro', $bairro);
$this->fieldlist->addField( 'Cidade', $cidade_id);
$this->fieldlist->addField( 'Estado', $estado_id);
$this->fieldlist->addField( '', $entidade_id);
$this->fieldlist->addField( 'Salvar/Excluir', $actEnd);

// adiciona campos no form

$this->form->addField($id);
$this->form->addField($enderecos_id);
$this->form->addField($cep);
$this->form->addField($logradouros_id);
$this->form->addField($endereco);
$this->form->addField($numero);
$this->form->addField($complemento);
$this->form->addField($bairro);
$this->form->addField($cidade_id);
$this->form->addField($estado_id);
$this->form->addField($entidade_id);
$this->form->addField($actEnd);

// create the page container

$container = new TVBox;
$container->style = 'width: 100%';
$container->add($this->form);

parent::add($container);
}

// metodo show() - mostra os dados na pagina

public function show()
{
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
{
$this->onLoad(0);
}
parent::show();
}

// Clear form

public function onClear($param)
{
$this->fieldlist->addHeader();
}

// metodo carga do fieldlist

function onLoad($param)
{
try
{
TTransaction::open('setcis');

$id_ent = TSession::getValue('id_entidade');

$objEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();

$this->fieldlist->addHeader();

if ($objEndereco)
{
foreach ($objEndereco as $end)
{
$objForm = new stdClass;
$objForm->list_id = $end->id;
$objForm->list_enderecos_id = $end->enderecos_id;
$objForm->list_cep = $end->cep;
$objForm->list_logradouros_id = $end->logradouros_id;
$objForm->list_endereco = $end->endereco;
$objForm->list_numero = $end->numero;
$objForm->list_complemento = $end->complemento;
$objForm->list_bairro = $end->bairro;
$objForm->list_cidade_id = $end->cidade_id;
$objForm->list_estado_id = $end->estado_id;

$row = $this->fieldlist->addDetail($objForm);
$row->del($row->get(count($row->getChildren())-1));
}

$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
else
{
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}

TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());

TTransaction::rollback();
}
}

public static function onDefine($param)
{
$opcao = $param['key'];

if($opcao == '1')
{
AdiantiCoreApplication::loadPage(__CLASS__, 'onSave', $param);
}
else
{
$action = new TAction([__CLASS__, 'onDelete']);
$action->setParameters($param);

new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
}

}

// method onSave

public function onSave($param)
{
try
{
// captura o indice e id

parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];

TTransaction::open('setcis');

//$this->form->validate();

if($id_end > 0)
{
$objEndereco = new EntidadeEndereco($id_end);
}
else
{
$objEndereco = new EntidadeEndereco;
$objEndereco->entidade_id = TSession::getValue('id_entidade');

}
$objEndereco->enderecos_id = $param['list_enderecos_id'][$indice];
$objEndereco->cep = $param['list_cep'][$indice];
$objEndereco->logradouros_id = $param['list_logradouros_id'][$indice];
$objEndereco->endereco = $param['list_endereco'][$indice];
$objEndereco->numero = $param['list_numero'][$indice];
$objEndereco->complemento = $param['list_complemento'][$indice];
$objEndereco->bairro = $param['list_bairro'][$indice];
$objEndereco->cidade_id = $param['list_cidade_id'][$indice];
$objEndereco->estado_id = $param['list_estado_id'][$indice];
$objEndereco->store();

TTransaction::close();

//$ret = array_pop($fieldlist ['list_id']);
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}

// method delete endereço

public function onDelete($param)
{
try
{
// captura o indice e id

parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];

TTransaction::open('setcis');

if($id_end > 0)
{
$tabEndereco = new EntidadeEndereco($id_end);
$tabEndereco->delete();
}

TTransaction::close();

$this->onLoad(0);

}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());

TTransaction::rollback();
}
}

// method busca cep



public static function onCep($param = null)
{
try
{
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];

$input_id = $param['_field_id'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);

$retorno = ConsultaCepService::getCep($param['key'], 'json');

$from = 'àáãâéêíóõôúüç';
$to = 'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';

if( isset($retorno->erro) )
{
throw new Exception($retorno->mensagem);
}
else
{
TTransaction::open('setcis');

$logra = explode(' ', strtoupper($retorno->logradouro));

$end = '';
$logEnd = strtr($logra[0], $from, $to);

foreach ($logra as $i => $value) if ($i != 0) $end = $end . strtr($logra[$i], $from, $to) . ' ';

$objCep = new StdClass;
$objCep->{'enderecos_id_'.$unique_id} = $param['list_enderecos_id'][$indice];
$objCep->{'cep_'.$unique_id} = $retorno->cep;

$logradouro = logradouros::where('descricao', '=', $logEnd)->load();
foreach ($logradouro as $logradouros) $objCep->{'logradouros_id_'.$unique_id} = $logradouros->id;

$objCep->{'endereco_'.$unique_id} = trim($end);
$objCep->{'bairro_'.$unique_id} = strtoupper(strtr($retorno->bairro, $from, $to));

$municipios = municipio::where('nome', '=', strtoupper(strtr($retorno->localidade, $from, $to)))->load();
foreach ($municipios as $municipio) $objCep->{'cidade_id_'.$unique_id} = $municipio->id;

$estados = estado::where('sigla', '=', strtoupper($retorno->uf))->load();
foreach ($estados as $estado) $objCep->{'estado_id_'.$unique_id} = $estado->id;

//$objCep->{'ibge_'.$unique_id} = $retorno->ibge;

TTransaction::close();

var_dump($objCep);

TForm::sendData('form_endereco', $objCep);
}
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
}
?>
NR

Os nomes dos atributos do objeto $objCep devem ser iguais aos nomes dos campos:
  1. <?php
  2. // criacao do campo
  3. $cep = new TEntry('list_cep[]');
  4. // funcao onCep
  5. //$objCep->{'cep_'.$unique_id} = $retorno->cep; 
  6. $objCep->{'list_cep_'.$unique_id} = $retorno->cep
  7. ?>
AT

Nataniel, Obrigado funcionou!!!