RB
Dificuldade em carregar dados multi field
Amigos,
Estou com dificuldade em carregar campos multifields, no onEdit e não estou conseguindo identificar o problema.
Alguém pode me ajudar ?
Segue trecho do código abaixo.
Funcionario.class.php
FuncionarioFormBuilder.class.php
Estou com dificuldade em carregar campos multifields, no onEdit e não estou conseguindo identificar o problema.
Alguém pode me ajudar ?
Segue trecho do código abaixo.
Funcionario.class.php
- <?php
- const TABLENAME = 'funcionario';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- private $pessoa_enderecos;
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('pessoa_id');
- parent::addAttribute('data_contratacao');
- parent::addAttribute('organizacao_id');
- parent::addAttribute('dependente');
- parent::addAttribute('matricula');
- parent::addAttribute('pis');
- parent::addAttribute('ativo');
- parent::addAttribute('criacao');
- parent::addAttribute('atualizacao');
- parent::addAttribute('data_emissao_pis');
- parent::addAttribute('pai');
- parent::addAttribute('mae');
- parent::addAttribute('grau_instrucao');
- parent::addAttribute('deficiente_fisico');
- ........................
- public function get_pessoa_enderecos()
- {
- // loads the associated object
- if (empty($this->pessoa_enderecos))
- $this->pessoa_enderecos = PessoaEndereco::where('pessoa_id','=',$this->pessoa_id)->where('organizacao_id','=',$this->organizacao_id)->load();
- // returns the associated object
- return $this->pessoa_enderecos;
- }
- }
- ?>
FuncionarioFormBuilder.class.php
- <?php
- class FuncionarioFormBuilder extends TPage
- {
- private $form;
- private $cep;
- private $enderecoList;
- private $dependenteList;
- protected $contatoList;
- public function __construct()
- {
- //dados correspondências
- $dados_endereco = new TLabel('Endereco');
- $dados_endereco->class ='lbl_titulo';
- $this->form->addContent( [$dados_endereco] );
- $frame_endereco = new TFrame('frame_endereco');
- $frame_endereco->style = 'margin:-13px 0 0 -1px; boredr-top:none;width:98.5%;float:left;display:table;';
- // detail fields
- $this->enderecoList = new TFieldList('Lista_enderecos');
- $frame_endereco->add($this->enderecoList);
- $this->form->addFields( [$frame_endereco] );
- $id_endereco = new TEntry('id_endereco[]');
- $id_endereco->setEditable(false);
- $id_endereco->style = 'display:none;';
- $this->cep = new TEntry('txt_cep[]');
- $this->cep->setMask('00000-000');
- $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));
- //$input_cep = new TAction(array($this,'onCep'));
- //$input_cep = new TAction(['Endereco','oncep'], ['param1'=>"$cep",'param2'=>'frm_funcionario']);
- $this->cep->setExitAction(new TAction(array($this,'onCep')));
- $logradouro = new TEntry('logradouro[]');
- $numero = new TEntry('numero[]');
- $bairro = new TEntry('bairro[]');
- $cidade = new TEntry('cidade[]');
- $uf = new TEntry('uf[]');
- $tipo_endereco_id = new TDBCombo('tipo_endereco_id[]','centinel','TipoEndereco','id','descricao');
- $complemento = new TEntry('compl[]');
- $regiao_id = new TDBCombo('regiao_id[]','centinel','Regiao','id','descricao');
- $uf->setMask('AA'); // Máscara Alfanumérica Delimitada
- $this->enderecoList->addField( '<span class = "lbl_text" style = "display:none;">#</span>', $id_endereco);
- $this->enderecoList->addField( '<span class = "lbl_text">Cep</span>', $this->cep);
- $this->enderecoList->addField( '<span class = "lbl_text">Logradouro</span>', $logradouro);
- $this->enderecoList->addField( '<span class = "lbl_text">Número<span/>', $numero);
- $this->enderecoList->addField( '<span class = "lbl_text">Tipo Endereço</span>', $tipo_endereco_id);
- $this->enderecoList->addField( '<span class = "lbl_text">Bairro</span>', $bairro);
- $this->enderecoList->addField( '<span class = "lbl_text">Cidade</span>', $cidade);
- $this->enderecoList->addField( '<span class = "lbl_text">UF</span>', $uf);
- $this->enderecoList->addField( '<span class = "lbl_text">Complemento</span>', $complemento);
- $this->enderecoList->addField( '<span class = "lbl_text">Região</span>', $regiao_id);
- //$this->enderecoList->enableSorting();
- $this->form->addField($id_endereco);
- $this->form->addField($this->cep);
- $this->form->addField($logradouro);
- $this->form->addField($numero);
- $this->form->addField($bairro);
- $this->form->addField($tipo_endereco_id);
- $this->form->addField($cidade);
- $this->form->addField($uf);
- $this->form->addField($complemento);
- $this->form->addField($regiao_id);
- }
- public function onEdit($param)
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key'];
- $organizacao_id = TSession::getValue('organizacion_id'); // pega id da empresa
- //abre a transação
- TTransaction::open('teste');
- //carrega o active record Funcionario conforme id
- $funcionario = Funcionario::find($key);
- ....................
- if ($funcionario->pessoa_enderecos)
- {
- $this->enderecoList->addHeader();
- foreach($funcionario->pessoa_enderecos as $endereco)
- {
- print $endereco->endereco_id.'<br/>Logradouro : '.$endereco->endereco->logradouro ;
- $endereco->id_endereco = $endereco->endereco_id;
- $endereco->txt_cep = substr($endereco->endereco->cep, 0, 5) . '-' . substr($endereco->endereco->cep, 5, 8);
- $endereco->logradouro = $endereco->endereco->logradouro;
- $endereco->bairro = $endereco->endereco->bairro;
- $endereco->cidade = $endereco->endereco->cidade;
- $endereco->uf = $endereco->endereco->uf;
- $endereco->compl = $endereco->endereco->complemento;
- $this->enderecoList->addDetail($endereco);
- }
- $this->enderecoList->addCloneAction();
- }
- else
- {
- $this->onClear($param);
- }
- }
- //preenche o formulario com os dados do funcionário
- $this->form->setData($funcionario);
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- //desfaz operações
- TTransaction::rollback();
- }
- }
Olá, eu de novo,
Outra coisa que estou tendo problemas, quando o método onEdit é executado os titulos dos multifields são repetidos.
Método onClear, esqueci de postar
Difícil dizer sem ver o restante do código, mas provavelmente você está chamando a função addHeader em mais de um local. Outra possibilidade é estar adicionando o componente mais de uma vez ao form.
Nataniel,
O código é o formulário acima FuncionarioFormBuilder.class.php
Sim, mas acho que você não postou o código completo
Nataniel,
Segue o código abaixo
</span></span></span>
Verifique sua função onEdit, ela permite que a função onClear seja executada várias vezes, o que acaba repetindo o comando addHeader.
Olá Rubens!
vc conseguiu resolver o problema para carregar os dados nos campos multifields do onEdit?
tenho um TCombo que deve ser carregada pelo método onChange... deve ser o mesmo problema seu onde a função onCep não é carregada.
Betuel, bom dia,
O meu problema é com a versão nova.
Eu tenho um formulário na versão antiga que esta funcionando, caso te ajude segue abaixo.