HB
FORM DESIGN GRAVANDO ATRIBUTOS NULOS
Olá pessoal.
Fiz um formulário no Form Designer e gerei o código PHP. Executei e funcionou em partes porque ao gravar o registro a aplicação emite a mensagem que gravou com sucesso só que ao consultar a base de dados foi gerado o ID corretamente, só que os demais campos ficaram nulos.
Como estou dando os meus primeiros passos no framework e no Studio, resolvi usar o wisard de geração de formulários usando a MESMA CLASSE que usei no Designer e pra minha surpresa funcionou tudo certo.
Fiquei sem entender, porque os dois códigos PHP foram gerados pelo framework e não sei o que pode estar errado.
Abaixo o código PHP gerado pelo Form Designer que grava campos nulos.
Alguém pode me ajudar?
Obrigado
José Humberto
Fiz um formulário no Form Designer e gerei o código PHP. Executei e funcionou em partes porque ao gravar o registro a aplicação emite a mensagem que gravou com sucesso só que ao consultar a base de dados foi gerado o ID corretamente, só que os demais campos ficaram nulos.
Como estou dando os meus primeiros passos no framework e no Studio, resolvi usar o wisard de geração de formulários usando a MESMA CLASSE que usei no Designer e pra minha surpresa funcionou tudo certo.
Fiquei sem entender, porque os dois códigos PHP foram gerados pelo framework e não sei o que pode estar errado.
Abaixo o código PHP gerado pelo Form Designer que grava campos nulos.
Alguém pode me ajudar?
Obrigado
José Humberto
- <?php
- /**
- * frmEstado Registration
- * @author ESSE FORMULÁRIO FOI CRIADO PELO FORM DESIGNER
- */
- class frmEstado extends TPage
- {
- private $form;
- private $datagrid;
- private $pageNavigation;
- private $loaded;
- /**
- * Class constructor
- * Creates the page and the registration form
- */
- function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new TForm('form_estado');
- try
- {
- // TUIBuilder object
- $ui = new TUIBuilder(500,500);
- $ui->setController($this);
- $ui->setForm($this->form);
- // reads the xml form
- $ui->parseFile('app/forms/formEstado.form.xml');
- // get the interface widgets
- $fields = $ui->getWidgets();
- // look for the TDataGrid object
- foreach ($fields as $name => $field)
- {
- if ($field instanceof TDataGrid)
- {
- $this->datagrid = $field;
- $this->pageNavigation = $this->datagrid->getPageNavigation();
- }
- }
- // add the TUIBuilder panel inside the TForm object
- $this->form->add($ui);
- // set form fields from interface fields
- $this->form->setFields($ui->getFields());
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- // add the form to the page
- parent::add($this->form);
- }
- /**
- * method onEdit()
- * Executed whenever the user clicks at the edit button da datagrid
- */
- function onEdit($param)
- {
- try
- {
- if (isset($param['key']))
- {
- // get the parameter $key
- $key=$param['key'];
- // open a transaction with database 'projetoadianti'
- TTransaction::open('projetoadianti');
- // instantiates object estado
- $object = new estado($key);
- // fill the form with the active record data
- $this->form->setData($object);
- // close the transaction
- TTransaction::close();
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- /**
- * method onSave()
- * Executed whenever the user clicks at the save button
- */
- function onSave()
- {
- try
- {
- // open a transaction with database 'projetoadianti'
- TTransaction::open('projetoadianti');
- // get the form data into an active record estado
- $object = $this->form->getData('estado');
- // form validation
- $this->form->validate();
- // stores the object
- $object->store();
- // set the data back to the form
- $this->form->setData($object);
- // close the transaction
- TTransaction::close();
- // shows the success message
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- // reload the listing
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- }
- ?>
Pessoal, gerei um LOG dos dois formulários, e por algum motivo o formulário gerado pelo Form Designer insere só a chave, e o formulário criado pelo wizard faz tudo certinho.
Log DO FORMULÁRIO WIZARD - ESSE TÁ CERTO
- SELECT max(id) as id FROM estado Debug: 2017-09-27 18:40:24
- INSERT INTO estado (id, EST01UF, EST01Nome) values (1, 'MG', 'Minas Gerais')
Log DO FORMULÁRIO DESIGNER - ESSE SÓ INSERE A CHAVE
- SELECT max(id) as id FROM estado Debug: 2017-09-27 18:38:15
- INSERT INTO estado (id) values (1)
José, o nome dos campos criados no designer correspondem exatamente ao nome dos campos do modelo e da tabela estado?
Nataniel, boa tarde.
Realmente os nomes estavam diferentes. Fiz a correção e deu certo.
Na vídeo-aula o Pablo dá essa dica, mais confesso que ao fazer na prática não prestei atenção.
Mais um motivo pra rever o vídeo com mais atenção rsrsrsrs.
Mais uma vez muito obrigado.