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




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.