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
}
}
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
}
}
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.
Na primeira linha vc colocou
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:
Se for uma ação, bastar colocar $this->ProdutosCadastro, ou self::ProdutosCadastro, o que ficar melhor com seu código.
Corrigindo
Ou seja, sua combo se chama "combo[]", sugiro que coloque new TCombo('unidade');
Tire o []