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(); } } }


Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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.