Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Formulário BootstrapFormBuilder não retorna as informações Olá amigos, preciso de uma ajuda. Fiz uma pagina e nela inseri uma DIV que receberá dinamicamente algumas classes. Quando insiro a primeira classe o botão salvar captura normalmente as informações e grava corretamente, porém quando adiciono a segunda, funciona tudo normalmente apenas não retorna nenhuma informação e ai cria toda hora um registro novo. O mais estranho é que ao abrir no ...
CA
Formulário BootstrapFormBuilder não retorna as informações  
Olá amigos, preciso de uma ajuda.
Fiz uma pagina e nela inseri uma DIV que receberá dinamicamente algumas classes. Quando insiro a primeira classe o botão salvar captura normalmente as informações e grava corretamente, porém quando adiciono a segunda, funciona tudo normalmente apenas não retorna nenhuma informação e ai cria toda hora um registro novo. O mais estranho é que ao abrir no evento onEdit envio normalmente as informações ao formulário.

Cadastro de Formulários.

class CadastroFormularios extends TPage { function __construct() { parent::__construct(); $this->form = new BootstrapFormBuilder('form_cadastro_atendimentos_formularios'); $this->form->setFormTitle('Formulários'); $this->form->setFieldSizes('100%'); $formulario = new TCombo('formulario'); $formulario->addItems(['1' => 'FORMULÁRIO 1', '2' => 'FORMULARIO 2']); $formulario->setChangeAction(new TAction(array($this, 'onCarregarFormulario'))); $row = $this->form->addFields( [ new TLabel('Selecione o Formulário'), $formulario ] ); $row->layout = [ 'col-sm-10' ]; $formulario_area = new TElement('div'); $formulario_area->id = 'formulario_area'; $this->form->addContent( [$formulario_area] ); $labelformularios = new TLabel('Formulários preenchidos', '#000000', 12, 'BI'); $labelformularios->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%'; $this->form->addContent( [$labelformularios] ); $this->grid_formularios = new BootstrapDatagridWrapper(new TQuickGrid); $this->grid_formularios->setHeight(180); $this->grid_formularios->makeScrollable(); $this->grid_formularios->style = 'overflow-x:auto;width: 100%;border-style: solid;border-width: 1px;border-color: #D8D8D8;'; $this->grid_formularios->id = 'grid_formularios'; $this->grid_formularios->disableDefaultClick(); $this->grid_formularios->addQuickColumn('Código', 'id', 'left', '5%'); $this->grid_formularios->addQuickColumn('Formulário', 'descricao', 'left', '90%'); $action_edit = new TDataGridAction(array($this, 'onEditFormulario')); $action_edit->setParameter('register_state', 'false'); $action_edit->setButtonClass('btn btn-default'); $action_edit->setLabel('Editar Formulário'); $action_edit->setImage('fa:pencil-square-o blue fa-lg'); $action_edit->setField('id'); $this->grid_formularios->addAction($action_edit); $action_delete = new TDataGridAction(array($this, 'onDeleteFormulario')); $action_delete->setParameter('register_state', 'false'); $action_delete->setButtonClass('btn btn-default'); $action_delete->setLabel('Deletar Formulário'); $action_delete->setImage('fa:trash-o red fa-lg'); $action_delete->setField('id'); $this->grid_formularios->addAction($action_delete); $this->grid_formularios->createModel(); $this->form->addContent( [$this->grid_formularios] ); // wrap the page content using vertical box $vbox = new TVBox; $vbox->style = 'width:100%;height:500px'; $vbox->add($this->form); parent::add($vbox); } /** * Remover formularios */ public function onDeleteFormulario($param) { try { $key=$param['key']; TTransaction::open('conexaodb'); $object = new formularios($key); $object->delete(); // shows the success message new TMessage('info', 'Registro deletado'); $this->onReload(); TTransaction::close(); } catch (Exception $e) // in case of exception { // shows the exception error message new TMessage('error', '<b>Error</b> ' . $e->getMessage()); TTransaction::rollback(); } } /** * Editar formularios */ public static function onEditFormulario($param) { try { $key=$param['key']; TTransaction::open('conexaodb'); $object = new formularios($key); if ($object->tipo==1){ AdiantiCoreApplication::loadPage('Formulario1', 'onEdit', ['key' => $key, 'register_state' => 'false']); }else if ($object->tipo==2){ AdiantiCoreApplication::loadPage('Formulario2', 'onEdit', ['key' => $key, 'register_state' => 'false']); } TTransaction::close(); } catch (Exception $e) // in case of exception { // shows the exception error message new TMessage('error', '<b>Error</b> ' . $e->getMessage()); TTransaction::rollback(); } } public static function onCarregarFormulario($param) { try { if (isset($param['formulario'])){ $formulario = $param['formulario']; if ($formulario==1){ AdiantiCoreApplication::loadPage('Formulario1', 'onEdit', ['register_state' => 'false']); }else if ($formulario==2){ AdiantiCoreApplication::loadPage('Formulario2', 'onEdit', ['register_state' => 'false']); } } } catch (Exception $e) { new TMessage('error', $e->getMessage()); } } /** * onReload */ public function onReload($param) { (...) } }


Formulário 1

class Formulario1 extends TPage { function __construct() { parent::__construct(); $this->adianti_target_container = 'formulario_area'; $this->form = new BootstrapFormBuilder('form_formulario_1'); $this->form->setFormTitle('FORMULÁRIO 1'); $this->form->setFieldSizes('100%'); $id = new TEntry('id'); $dataemissao = new TDate('datainicio'); $campo1 = new TRadioGroup('campo1'); $campo2 = new TRadioGroup('campo2'); $id->setEditable(FALSE); $dataemissao->setMask('dd/mm/yyyy'); $campo1->addItems(['1'=>'Sim', '0'=>'Não']); $campo1->setLayout('horizontal'); $campo1->setValue(0); $campo2->addItems(['1'=>'Sim', '0'=>'Não']); $campo2->setLayout('horizontal'); $campo2->setValue(0); $row = $this->form->addFields( [ new TLabel('Código'), $id ], [ new TLabel('Data Emissão'), $dataemissao ] ); $row->layout = [ 'col-sm-1', 'col-sm-2' ]; $row = $this->form->addFields( [ new TLabel('Campo 1'), $campo1 ], [ new TLabel('Campo 2'), $campo2 ]); $row->layout = [ 'col-sm-2', 'col-sm-2' ]; $this->form->addAction('Gravar', new TAction(array($this, 'onSave')), 'fa:check-circle-o green'); $vbox = new TVBox; $vbox->style = 'width: 100%'; $vbox->add($this->form); parent::add($vbox); } public function onEdit($param) { try { if (isset($param['key'])){ $key = $param['key']; TTransaction::open('conexaodb'); $object = new formularios($key); if ($object->dataemissao) TDate::date2br($object->dataemissao); $this->form->setData($object); TTransaction::close(); } } catch (Exception $e) { new TMessage('error', $e->getMessage()); TTransaction::rollback(); } } public function onSave($param) { try { TTransaction::open('conexaodb'); $data = $this->form->getData('formularios'); if ($data->dataemissao) $data->dataemissao = TDate::date2us($data->dataemissao); $data->tipo = 1; $data->store(); TTransaction::close(); AdiantiCoreApplication::loadPage('CadastroFormularios', 'onEdit', [ 'register_state' => 'false' ]); } catch (Exception $e) { new TMessage('error', $e->getMessage()); TTransaction::rollback(); } } }


Formulário 2

class Formulario2 extends TPage { function __construct() { parent::__construct(); $this->adianti_target_container = 'formulario_area'; $this->form = new BootstrapFormBuilder('form_formulario_2'); $this->form->setFormTitle('FORMULÁRIO 2'); $this->form->setFieldSizes('100%'); $id = new TEntry('id'); $dataemissao = new TDate('datainicio'); $campo1 = new TRadioGroup('campo1'); $campo2 = new TRadioGroup('campo2'); $campo3 = new TRadioGroup('campo3'); $campo4 = new TRadioGroup('campo4'); $id->setEditable(FALSE); $dataemissao->setMask('dd/mm/yyyy'); $campo1->addItems(['1'=>'Sim', '0'=>'Não']); $campo1->setLayout('horizontal'); $campo1->setValue(0); $campo2->addItems(['1'=>'Sim', '0'=>'Não']); $campo2->setLayout('horizontal'); $campo2->setValue(0); $campo3->addItems(['1'=>'Sim', '0'=>'Não']); $campo3->setLayout('horizontal'); $campo3->setValue(0); $campo4->addItems(['1'=>'Sim', '0'=>'Não']); $campo4->setLayout('horizontal'); $campo4->setValue(0); $row = $this->form->addFields( [ new TLabel('Código'), $id ], [ new TLabel('Data Emissão'), $dataemissao ] ); $row->layout = [ 'col-sm-1', 'col-sm-2' ]; $row = $this->form->addFields( [ new TLabel('Campo 1'), $campo1 ], [ new TLabel('Campo 2'), $campo2 ]); $row->layout = [ 'col-sm-2', 'col-sm-2' ]; $row = $this->form->addFields( [ new TLabel('Campo 3'), $campo3 ], [ new TLabel('Campo 4'), $campo4 ]); $row->layout = [ 'col-sm-2', 'col-sm-2' ]; $this->form->addAction('Gravar', new TAction(array($this, 'onSave')), 'fa:check-circle-o green'); $vbox = new TVBox; $vbox->style = 'width: 100%'; $vbox->add($this->form); parent::add($vbox); } public function onEdit($param) { try { if (isset($param['key'])){ $key = $param['key']; TTransaction::open('conexaodb'); $object = new formularios($key); if ($object->dataemissao) TDate::date2br($object->dataemissao); $this->form->setData($object); TTransaction::close(); } } catch (Exception $e) { new TMessage('error', $e->getMessage()); TTransaction::rollback(); } } public function onSave($param) { try { TTransaction::open('conexaodb'); $data = $this->form->getData('formularios'); if ($data->dataemissao) $data->dataemissao = TDate::date2us($data->dataemissao); $data->tipo = 2; $data->store(); TTransaction::close(); AdiantiCoreApplication::loadPage('CadastroFormularios', 'onEdit', [ 'register_state' => 'false' ]); } catch (Exception $e) { new TMessage('error', $e->getMessage()); TTransaction::rollback(); } } }


Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


CA

Só mais um detalhe que eu esqueci. Parece ser um bug no framework, se no Formulário 2 for retirado o campo datainicio é que ocorre o erro. Deixando somente os TRadioGroup a variavel $param no evento onSave fica apenas com as informações do nome do formulário e o nome do evento os campos não são exibidos como se os campos não existissem no formulario.
NR

Se não me engano, form dentro de form não é sintaxe válida do html(https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/form) . Pode ser algo relacionado a isso.