Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Função form->getData() retorna TDBCombo vazio Fiz um formulário com dois TDBCombo, as opções no formulário aparecem corretamente. Porém mesmo selecionando uma opção ao clicar em salvar os TDBCombos aparecem vazios. Preciso fazer alguma configuração antes do form->getData();...
EL
Função form->getData() retorna TDBCombo vazio  
Fiz um formulário com dois TDBCombo, as opções no formulário aparecem corretamente. Porém mesmo selecionando uma opção ao clicar em salvar os TDBCombos aparecem vazios.

Preciso fazer alguma configuração antes do form->getData();

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


NR

A função setData preenche o formulário com os valores informados.
  1. <?php
  2. $data $this->form->getData();
  3. $this->form->setData($data);
  4. ?>
EL

Olá Nataniel, a questão é que os INPUTs depois do $data = $this->form->getData(); os valores nesses campos são exibidos. Mas os selects com TDBCombo mesmo selecionando valores ao exibir os dados esses selects estão vazios.

Trecho dos códigos do formulário e método onSave:

  1. <?php 
  2.        // campos da tabela
  3.         $id      = new TEntry('cur_id');
  4.         $nome    = new TEntry('cur_nome');
  5.         $ementa  = new TText('cur_ementa');
  6.         $prof    = new TText('cur_profissao');
  7.         $cargaH  = new TEntry('cur_carga_horaria');
  8.         $area    = new TDBCombo('Área do Curso''sample''AreaCurso''arc_id''arc_descricao');
  9.         $tipo    = new TDBCombo('Tipo de Curso''sample''TipoCurso''tic_id''tic_descricao');
  10.         $valor   = new TEntry('cur_valor');
  11.         // Adicionando os campos no formulário (Label, Objeto, Largura e Validador)
  12.         $this->form->addQuickField('Código:'$id,  40);
  13.         $this->form->addQuickField('Curso:'$nome,  300, new TRequiredValidator);
  14.         $this->form->addQuickField('Ementa:'$ementa300, new TRequiredValidator);
  15.         $this->form->addQuickField('Profissionais:'$prof300, new TRequiredValidator);
  16.         $this->form->addQuickField('Carga horária:'$cargaH40, new TRequiredValidator);
  17.         $this->form->addQuickField('Valor:'$valor60, new TRequiredValidator);
  18.         $this->form->addQuickField('Tipo de Curso:'$tipo100, new TRequiredValidator);
  19.         $this->form->addQuickField('Área do Curso:'$area100, new TRequiredValidator);
  20. public function onSave()
  21.     {
  22.         try {
  23.             //$this->form->validate(); // Validação do formulário
  24.             //TTransaction::open('sample');
  25.             $objeto $this->form->getData('Curso');
  26.             $this->form->setData($objeto);
  27.             $objeto->cur_valor Funcoes::valorSql($objeto->cur_valor);
  28.             print_r($objeto); // Mostra TDBCombo vazios
  29.             exit();
  30.             
  31.             $objeto->store(); // Função do active record para gravar no banco de dados
  32.             $this->form->setData($objeto); // Função para manter os dados no formulário
  33.             new TMessage('info''Curso salvo com sucesso!');
  34.             //TTransaction::close();
  35.         } catch (Error $e) {
  36.             new TMessage('Erro'$e->getMessage());
  37.             //TTransaction::rollback(); // Desfaz a transação
  38.         }
  39.     }
  40. ?>
NR

O primeiro parâmetro da TDBCombo deve ser o nome do campo no formulário e deve coincidir com o nome da coluna no model/banco de dados
  1. <?php
  2. $area  = new TDBCombo('arc_id''sample''AreaCurso''arc_id''arc_descricao');
  3. $tipo   = new TDBCombo('tic_id''sample''TipoCurso''tic_id''tic_descricao'); 
  4. ?>
EL

Obrigado Nataniel, confundi o nome do campo na tabela com o label do campo no formulário.
Fiz a correção e funcionou.