Lançado Adianti Framework 8.1!
Clique aqui para saber mais
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 ...
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

  1. <?php
  2. /**
  3.  * frmEstado Registration
  4.  * @author  ESSE FORMULÁRIO FOI CRIADO PELO FORM DESIGNER
  5.  */
  6. class frmEstado extends TPage
  7. {
  8.     private $form;
  9.     private $datagrid;
  10.     private $pageNavigation;
  11.     private $loaded;
  12.     
  13.     /**
  14.      * Class constructor
  15.      * Creates the page and the registration form
  16.      */
  17.     function __construct()
  18.     {
  19.         parent::__construct();
  20.         
  21.         // creates the form
  22.         $this->form = new TForm('form_estado');
  23.         
  24.         try
  25.         {
  26.             // TUIBuilder object
  27.             $ui = new TUIBuilder(500,500);
  28.             $ui->setController($this);
  29.             $ui->setForm($this->form);
  30.             
  31.             // reads the xml form
  32.             $ui->parseFile('app/forms/formEstado.form.xml');
  33.             
  34.             // get the interface widgets
  35.             $fields $ui->getWidgets();
  36.             // look for the TDataGrid object
  37.             foreach ($fields as $name => $field)
  38.             {
  39.                 if ($field instanceof TDataGrid)
  40.                 {
  41.                     $this->datagrid $field;
  42.                     $this->pageNavigation $this->datagrid->getPageNavigation();
  43.                 }
  44.             }
  45.             
  46.             // add the TUIBuilder panel inside the TForm object
  47.             $this->form->add($ui);
  48.             // set form fields from interface fields
  49.             $this->form->setFields($ui->getFields());
  50.         }
  51.         catch (Exception $e)
  52.         {
  53.             new TMessage('error'$e->getMessage());
  54.         }
  55.         
  56.         // add the form to the page
  57.         parent::add($this->form);
  58.     }
  59.     
  60.     /**
  61.      * method onEdit()
  62.      * Executed whenever the user clicks at the edit button da datagrid
  63.      */
  64.     function onEdit($param)
  65.     {
  66.         try
  67.         {
  68.             if (isset($param['key']))
  69.             {
  70.                 // get the parameter $key
  71.                 $key=$param['key'];
  72.                 
  73.                 // open a transaction with database 'projetoadianti'
  74.                 TTransaction::open('projetoadianti');
  75.                 
  76.                 // instantiates object estado
  77.                 $object = new estado($key);
  78.                 
  79.                 // fill the form with the active record data
  80.                 $this->form->setData($object);
  81.                 
  82.                 // close the transaction
  83.                 TTransaction::close();
  84.             }
  85.             else
  86.             {
  87.                 $this->form->clear(TRUE);
  88.             }
  89.         }
  90.         catch (Exception $e// in case of exception
  91.         {
  92.             // shows the exception error message
  93.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  94.             
  95.             // undo all pending operations
  96.             TTransaction::rollback();
  97.         }
  98.     }
  99.     /**
  100.      * method onSave()
  101.      * Executed whenever the user clicks at the save button
  102.      */
  103.     function onSave()
  104.     {
  105.         try
  106.         {
  107.             // open a transaction with database 'projetoadianti'
  108.             TTransaction::open('projetoadianti');
  109.             
  110.             // get the form data into an active record estado
  111.             $object $this->form->getData('estado');
  112.             
  113.             // form validation
  114.             $this->form->validate();
  115.             
  116.             // stores the object
  117.             $object->store();
  118.             
  119.             // set the data back to the form
  120.             $this->form->setData($object);
  121.             
  122.             // close the transaction
  123.             TTransaction::close();
  124.             
  125.             // shows the success message
  126.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  127.             // reload the listing
  128.         }
  129.         catch (Exception $e// in case of exception
  130.         {
  131.             // shows the exception error message
  132.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  133.             // undo all pending operations
  134.             TTransaction::rollback();
  135.         }
  136.     }
  137. }
  138. ?>




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)


HB

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)

NR

José, o nome dos campos criados no designer correspondem exatamente ao nome dos campos do modelo e da tabela estado?
HB

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.