THtmlEditor não salva com onSave simples... Senhores, estou implementando um projeto e me deparei com um problema que não consegui resolver... sei que deve ser besteira mas não consegui e gostaria de, se possível, contar com a ajuda dos mestres... É o seguinte: Não consegui fazer com que os campos com THtmlEditor seja salvo na base de dados... todos os outros campos salvam direitinho mas os que são THtmlEditor não são enviados nem...
CC
THtmlEditor não salva com onSave simples...  
Senhores, estou implementando um projeto e me deparei com um problema que não consegui resolver... sei que deve ser besteira mas não consegui e gostaria de, se possível, contar com a ajuda dos mestres...
É o seguinte: Não consegui fazer com que os campos com THtmlEditor seja salvo na base de dados... todos os outros campos salvam direitinho mas os que são THtmlEditor não são enviados nem setados no formulário, ou seja quando clico em salvar eles apagam... Aproveito para perguntar se há algum problema em colocar tantos campos neste formato (são 22)
será que é esse o problema...?

 
  1. <?php
  2. /**
  3. * ClausulaForm Form
  4. * @author <your name here>
  5. */
  6. class ClausulaForm extends TPage
  7. {
  8. protected $form; // form
  9. /**
  10. * Form constructor
  11. * @param $param Request
  12. */
  13. public function __construct( $param )
  14. {
  15. parent::__construct();
  16. // creates the form
  17. $this->form = new BootstrapFormBuilder('form_Clausula');
  18. $this->form->setFormTitle('Clausula');
  19. // create the form fields
  20. $id = new TEntry('id');
  21. $actNumeroVig = new TEntry('actNumeroVig');
  22. $actStatus = new TEntry('actStatus');
  23. $actNome = new TEntry('actNome');
  24. $actOrientaDir = new THtmlEditor('actOrientaDir');
  25. $actObs = new THtmlEditor('actObs');
  26. $actGrupo = new TEntry('actGrupo');
  27. $actOrdemClausula = new TEntry('actOrdemClausula');
  28. $actVigIni = new TDate('actVigIni');
  29. $actVigFim = new TDate('actVigFim');
  30. $txtOrientDir = new THtmlEditor('txtOrientDir');
  31. $txtGdfEmater = new THtmlEditor('txtGdfEmater');
  32. $txtGdfTcb = new THtmlEditor('txtGdfTcb');
  33. $txtGdfNovacap = new THtmlEditor('txtGdfNovacap');
  34. $txtGdfCeasa = new THtmlEditor('txtGdfCeasa');
  35. $txtGdfCodeplan = new THtmlEditor('txtGdfCodeplan');
  36. $txtGdfCodhab = new THtmlEditor('txtGdfCodhab');
  37. $txtGDFTerracap = new THtmlEditor('txtGDFTerracap');
  38. $txtGdfCeb = new THtmlEditor('txtGdfCeb');
  39. $txtGdfCaesb = new THtmlEditor('txtGdfCaesb');
  40. $txtGdfBrb = new TEntry('txtGdfBrb');
  41. $txtGdfSab = new THtmlEditor('txtGdfSab');
  42. $txtVigenteClausula = new THtmlEditor('txtVigenteClausula');
  43. $txtVigenteAnalise = new THtmlEditor('txtVigenteAnalise');
  44. $txtPatronalProposta = new THtmlEditor('txtPatronalProposta');
  45. $txtPatronalAnalise = new THtmlEditor('txtPatronalAnalise');
  46. $txtSindicalProposta = new THtmlEditor('txtSindicalProposta');
  47. $txtSindicalAnalise = new THtmlEditor('txtSindicalAnalise');
  48. $txtAcordadoClausula = new THtmlEditor('txtAcordadoClausula');
  49. $txtAcordadoAnalise = new THtmlEditor('txtAcordadoAnalise');
  50. $actDtAcordo = new TDate('actDtAcordo');
  51. $actTipo = new TEntry('actTipo');
  52. $titulo_id = new TDBUniqueSearch('titulo_id', 'artdb', 'Titulo', 'id', 'ttlTitulo');
  53. $sub_titulo_id = new TDBUniqueSearch('sub_titulo_id', 'artdb', 'SubTitulo', 'id', 'sttSubTitulo');
  54. $classificacao_id = new TDBUniqueSearch('classificacao_id', 'artdb', 'Classificacao', 'id', 'claClassificacao');
  55. $data_base_id = new TDBUniqueSearch('data_base_id', 'artdb', 'DataBase', 'id', 'dtbDataBase');
  56. // add the fields
  57. $this->form->addFields( [ new TLabel('Id') ], [ $id ] );
  58. $this->form->addFields( [ new TLabel('Nº Vigente') ], [ $actNumeroVig ] );
  59. $this->form->addFields( [ new TLabel('Actstatus') ], [ $actStatus ] );
  60. $this->form->addFields( [ new TLabel('Actnome') ], [ $actNome ] );
  61. $this->form->addFields( [ new TLabel('Actorientadir') ], [ $actOrientaDir ] );
  62. $this->form->addFields( [ new TLabel('Observação') ], [ $actObs ] );
  63. $this->form->addFields( [ new TLabel('Actgrupo') ], [ $actGrupo ] );
  64. $this->form->addFields( [ new TLabel('Actordemclausula') ], [ $actOrdemClausula ] );
  65. $this->form->addFields( [ new TLabel('Actvigini') ], [ $actVigIni ] );
  66. $this->form->addFields( [ new TLabel('Actvigfim') ], [ $actVigFim ] );
  67. $this->form->addFields( [ new TLabel('Txtorientdir') ], [ $txtOrientDir ] );
  68. $this->form->addFields( [ new TLabel('Txtgdfemater') ], [ $txtGdfEmater ] );
  69. $this->form->addFields( [ new TLabel('Txtgdftcb') ], [ $txtGdfTcb ] );
  70. $this->form->addFields( [ new TLabel('Txtgdfnovacap') ], [ $txtGdfNovacap ] );
  71. $this->form->addFields( [ new TLabel('Txtgdfceasa') ], [ $txtGdfCeasa ] );
  72. $this->form->addFields( [ new TLabel('Txtgdfcodeplan') ], [ $txtGdfCodeplan ] );
  73. $this->form->addFields( [ new TLabel('Txtgdfcodhab') ], [ $txtGdfCodhab ] );
  74. $this->form->addFields( [ new TLabel('Txtgdfterracap') ], [ $txtGDFTerracap ] );
  75. $this->form->addFields( [ new TLabel('Txtgdfceb') ], [ $txtGdfCeb ] );
  76. $this->form->addFields( [ new TLabel('Txtgdfcaesb') ], [ $txtGdfCaesb ] );
  77. $this->form->addFields( [ new TLabel('Txtgdfbrb') ], [ $txtGdfBrb ] );
  78. $this->form->addFields( [ new TLabel('Txtgdfsab') ], [ $txtGdfSab ] );
  79. $this->form->addFields( [ new TLabel('Txtvigenteclausula') ], [ $txtVigenteClausula ] );
  80. $this->form->addFields( [ new TLabel('Txtvigenteanalise') ], [ $txtVigenteAnalise ] );
  81. $this->form->addFields( [ new TLabel('Txtpatronalproposta') ], [ $txtPatronalProposta ] );
  82. $this->form->addFields( [ new TLabel('Txtpatronalanalise') ], [ $txtPatronalAnalise ] );
  83. $this->form->addFields( [ new TLabel('Txtsindicalproposta') ], [ $txtSindicalProposta ] );
  84. $this->form->addFields( [ new TLabel('Txtsindicalanalise') ], [ $txtSindicalAnalise ] );
  85. $this->form->addFields( [ new TLabel('Txtacordadoclausula') ], [ $txtAcordadoClausula ] );
  86. $this->form->addFields( [ new TLabel('Txtacordadoanalise') ], [ $txtAcordadoAnalise ] );
  87. $this->form->addFields( [ new TLabel('Actdtacordo') ], [ $actDtAcordo ] );
  88. $this->form->addFields( [ new TLabel('Acttipo') ], [ $actTipo ] );
  89. $this->form->addFields( [ new TLabel('Titulo Id') ], [ $titulo_id ] );
  90. $this->form->addFields( [ new TLabel('Sub Titulo Id') ], [ $sub_titulo_id ] );
  91. $this->form->addFields( [ new TLabel('Classificacao Id') ], [ $classificacao_id ] );
  92. $this->form->addFields( [ new TLabel('Data Base Id') ], [ $data_base_id ] );
  93. // set sizes
  94. $id->setSize('100%');
  95. $actNumeroVig->setSize('100%');
  96. $actStatus->setSize('100%');
  97. $actNome->setSize('100%');
  98. $actOrientaDir->setSize('100%');
  99. $actObs->setSize('100%');
  100. $actGrupo->setSize('100%');
  101. $actOrdemClausula->setSize('100%');
  102. $actVigIni->setSize('100%');
  103. $actVigFim->setSize('100%');
  104. $txtOrientDir->setSize('100%');
  105. $txtGdfEmater->setSize('100%');
  106. $txtGdfTcb->setSize('100%');
  107. $txtGdfNovacap->setSize('100%');
  108. $txtGdfCeasa->setSize('100%');
  109. $txtGdfCodeplan->setSize('100%');
  110. $txtGdfCodhab->setSize('100%');
  111. $txtGDFTerracap->setSize('100%');
  112. $txtGdfCeb->setSize('100%');
  113. $txtGdfCaesb->setSize('100%');
  114. $txtGdfBrb->setSize('100%');
  115. $txtGdfSab->setSize('100%');
  116. $txtVigenteClausula->setSize('100%');
  117. $txtVigenteAnalise->setSize('100%');
  118. $txtPatronalProposta->setSize('100%');
  119. $txtPatronalAnalise->setSize('100%');
  120. $txtSindicalProposta->setSize('100%');
  121. $txtSindicalAnalise->setSize('100%');
  122. $txtAcordadoClausula->setSize('100%');
  123. $txtAcordadoAnalise->setSize('100%');
  124. $actDtAcordo->setSize('100%');
  125. $actTipo->setSize('100%');
  126. $titulo_id->setSize('100%');
  127. $sub_titulo_id->setSize('100%');
  128. $classificacao_id->setSize('100%');
  129. $data_base_id->setSize('100%');
  130. if (!empty($id))
  131. {
  132. $id->setEditable(FALSE);
  133. }
  134. /** samples
  135. $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
  136. $fieldX->setSize( '100%' ); // set size
  137. **/
  138. // create the form actions
  139. $btn = $this->form->addAction(_t('Save'), new TAction([$this, 'onSave']), 'fa:floppy-o');
  140. $btn->class = 'btn btn-sm btn-primary';
  141. $this->form->addAction(_t('New'), new TAction([$this, 'onEdit']), 'fa:eraser red');
  142. // vertical box container
  143. $container = new TVBox;
  144. $container->style = 'width: 90%';
  145. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  146. $container->add($this->form);
  147. parent::add($container);
  148. }
  149. /**
  150. * Save form data
  151. * @param $param Request
  152. */
  153. public function onSave( $param )
  154. {
  155. try
  156. {
  157. TTransaction::open('artdb'); // open a transaction
  158. /**
  159. // Enable Debug logger for SQL operations inside the transaction
  160. TTransaction::setLogger(new TLoggerSTD); // standard output
  161. TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  162. **/
  163. $this->form->validate(); // validate form data
  164. $data = $this->form->getData(); // get form data as array
  165. $this->form->setData($data); // put the data back to the form "Cleiton"
  166. $object = new Clausula; // create an empty object
  167. $object->fromArray( (array) $data); // load the object with data
  168. $object->store(); // save the object
  169. // get the generated id
  170. $data->id = $object->id;
  171. $this->form->setData($data); // fill form data
  172. TTransaction::close(); // close the transaction
  173. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  174. }
  175. catch (Exception $e) // in case of exception
  176. {
  177. new TMessage('error', $e->getMessage()); // shows the exception error message
  178. $this->form->setData( $this->form->getData() ); // keep form data
  179. TTransaction::rollback(); // undo all pending operations
  180. }
  181. }
  182. /**
  183. * Clear form data
  184. * @param $param Request
  185. */
  186. public function onClear( $param )
  187. {
  188. $this->form->clear(TRUE);
  189. }
  190. /**
  191. * Load object to form data
  192. * @param $param Request
  193. */
  194. public function onEdit( $param )
  195. {
  196. try
  197. {
  198. if (isset($param['key']))
  199. {
  200. $key = $param['key']; // get the parameter $key
  201. TTransaction::open('artdb'); // open a transaction
  202. $object = new Clausula($key); // instantiates the Active Record
  203. $this->form->setData($object); // fill the form
  204. TTransaction::close(); // close the transaction
  205. }
  206. else
  207. {
  208. $this->form->clear(TRUE);
  209. }
  210. }
  211. catch (Exception $e) // in case of exception
  212. {
  213. new TMessage('error', $e->getMessage()); // shows the exception error message
  214. TTransaction::rollback(); // undo all pending operations
  215. }
  216. }
  217. }
  218. ?>

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


MG

A quantidade de campos não deve influenciar.
Você deve verificar se os campos estão corretamente mapeados no Model e BD.
Todos os campos do fomulário devem ser iguais ao Model.
CC

Antes de mais nada, Muito obrigado amigo Marcelo, sempre prestativo e atuante... Que Deus o abençoe e te fortaleça...

Seguindo com a questão... Já tinha ciência mas deu uma conferida na Classe model e na base de dados e ambas estão ok... os nomes conferem certinho... ocorre que mesmo assim não salva na base... testei alterando o tipo do campo para TEntry aí salva direitinho...contudo se é THtmlEditor não salva... já bati cabeça e não sei se estou errando em alguma coisa ou se há algum problema de sistema...

Se alguém puder me ajudar ficarei eternamente grato...
CC

Antes de mais nada, Muito obrigado amigo Marcelo, sempre prestativo e atuante... Que Deus o abençoe e te fortaleça...

Seguindo com a questão... Já tinha ciência mas deu uma conferida na Classe model e na base de dados e ambas estão ok... os nomes conferem certinho... ocorre que mesmo assim não salva na base... testei alterando o tipo do campo para TEntry aí salva direitinho...contudo se é THtmlEditor não salva... já bati cabeça e não sei se estou errando em alguma coisa ou se há algum problema de sistema...

Se alguém puder me ajudar ficarei eternamente grato...
MG

Olá Cleiton, primeiro obrigado e desejo o mesmo pra ti.
Mais uma dúvida, qual é o tipo de dado no banco: Text ou LongText?
Pergunto, pois tenho uma aplicação que possui alguns THtmlEditor e funcionam direitinho.
CC

Os campos estão estão como LongText...
será que é isso???
CC

Gente... Já conferi tudo... Nome dos campos no model e na base... tipo: LongText... Salva todos os outros dados com exceção do tipo THtmlEditor...

Criei, separadamente uma tabela com um campo do tipo LongText e criei a model... mas quando faço o formulário ele não cadastra na base... Para testar, alterei na classe do formulário o tipo (de THtmlEditor para Tentry) aí cadastra na base... Realmente não sei o que pode estar errado...

Vou continuar tentando resolver... Se os universitários tiverem uma ideia do que pode estar errado peço encarecidamente que me ajudem...
CC

Caros Mestres da Adianti, após muito trabalhar e pesquisar,, tendo a inestimável ajuda do amigo Marcelo Gomes, Identifiquei que o problema ocorre somente quando objeto THtmlEditor se encontra dentro de um TNotbook, caso contrário tudo funfa direitinho... creio ser um bug do sistema, e neste caso faço aqui o registro para que,se possível,seja resolvido em versões futuras tanto do Frame quanto do Studio... Este seria o "laudo prévio" caso alguém tenha a solução e puder ajudar... tudo que tinamos em mente já foi tentado restando somente a possibilidade de ser um BUG... Ficamos então no aguardo de uma nova versão que possa corrigir este erro possibilitando o uso deste ferramenta que é muito interessante aos projetos com Adianti... Abraço a todos...