TCombo não salva Bom dia Amigos... Tenho um form que tem uma tcombo e noto que via onSave nao esta gravando no banco: $unid = new TCombo('combo[]'); $unid->enableSearch(); $unid->addItems(['1'=>'KG','2'=>'UN','3'=>'PÇ','4'=>'LT','5'=>'MT', '6'=>'DZ', '5'=>'CJ']); $unid->setSize('100%'); // add form fields $row = $this->form->addFields( [ new TLabel('Cód. Prod.'), $cod...
RS
TCombo não salva  
Bom dia Amigos...

Tenho um form que tem uma tcombo e noto que via onSave nao esta gravando no banco:

$unid = new TCombo('combo[]');
$unid->enableSearch();
$unid->addItems(['1'=>'KG','2'=>'UN','3'=>'PÇ','4'=>'LT','5'=>'MT', '6'=>'DZ', '5'=>'CJ']);
$unid->setSize('100%');

// add form fields
$row = $this->form->addFields( [ new TLabel('Cód. Prod.'), $codProd ],
[ new TLabel('Descrição'), $descricao ],
[ new TLabel('Unid.'), $unid ],
[ new TLabel('Cód. Barras'), $codBarras ]);
$row->layout = ['col-sm-2', 'col-sm-6', 'col-sm-2', 'col-sm-2'];

public function onSave($param)
{
try
{
TTransaction::open('megadb'); // abre a transação

// obtém os dados do form na forma de um Active Record
$object = $this->form->getData('Produto');
$object->store(); // armazena o objeto
// $this->form->setData($object); // mantém o form preenchido
TTransaction::close(); // fecha a transação
new TMessage('info', 'Salvo com Sucesso!'); // mensagem de sucesso
$novo = $this->form->addQuickAction('Novo', new TAction(array('ProdutosCadastro', 'onEdit')), 'fa:plus fa-plus');
}
catch (Exception $e) // em caso de exceção
{
new TMessage('error', 'Error ' . $e->getMessage());
TTransaction::rollback(); // desfaz operações
}
}

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


MG

Veja, automaticamente o sistema entende que o nome do campo seja o mesmo do formulário.
No seu exemplo, vc precisaria ter um campo chamado "combo".
Neste caso, como a seleção é única, então ao criar o campo dê a ele o mesmo nome da coluna na tabela, por exemplo:

$unid = new TCombo('unidade"). // <= aquri é preciso que o nome seja o mesmo da colunha.
MC

Na primeira linha vc colocou
 
  1. <?php
  2. $unid = new TCombo('combo[]');
  3. ?>

Ou seja, sua combo se chama "combo[]", sugiro que coloque new TCombo('unidade]');

E na ultima linha do seu bloco TRY, vc adicionou um botão lá dentro:
 
  1. <?php
  2. $novo = $this->form->addQuickAction('Novo', new TAction(array('ProdutosCadastro', 'onEdit')), 'fa:plus fa-plus');
  3. ?>

Se for uma ação, bastar colocar $this->ProdutosCadastro, ou self::ProdutosCadastro, o que ficar melhor com seu código.
MC

Corrigindo

Ou seja, sua combo se chama "combo[]", sugiro que coloque new TCombo('unidade');
Tire o []