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

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