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...?
É 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...?
- <?php
- /**
- * ClausulaForm Form
- * @author <your name here>
- */
- class ClausulaForm extends TPage
- {
- protected $form; // form
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_Clausula');
- $this->form->setFormTitle('Clausula');
- // create the form fields
- $id = new TEntry('id');
- $actNumeroVig = new TEntry('actNumeroVig');
- $actStatus = new TEntry('actStatus');
- $actNome = new TEntry('actNome');
- $actOrientaDir = new THtmlEditor('actOrientaDir');
- $actObs = new THtmlEditor('actObs');
- $actGrupo = new TEntry('actGrupo');
- $actOrdemClausula = new TEntry('actOrdemClausula');
- $actVigIni = new TDate('actVigIni');
- $actVigFim = new TDate('actVigFim');
- $txtOrientDir = new THtmlEditor('txtOrientDir');
- $txtGdfEmater = new THtmlEditor('txtGdfEmater');
- $txtGdfTcb = new THtmlEditor('txtGdfTcb');
- $txtGdfNovacap = new THtmlEditor('txtGdfNovacap');
- $txtGdfCeasa = new THtmlEditor('txtGdfCeasa');
- $txtGdfCodeplan = new THtmlEditor('txtGdfCodeplan');
- $txtGdfCodhab = new THtmlEditor('txtGdfCodhab');
- $txtGDFTerracap = new THtmlEditor('txtGDFTerracap');
- $txtGdfCeb = new THtmlEditor('txtGdfCeb');
- $txtGdfCaesb = new THtmlEditor('txtGdfCaesb');
- $txtGdfBrb = new TEntry('txtGdfBrb');
- $txtGdfSab = new THtmlEditor('txtGdfSab');
- $txtVigenteClausula = new THtmlEditor('txtVigenteClausula');
- $txtVigenteAnalise = new THtmlEditor('txtVigenteAnalise');
- $txtPatronalProposta = new THtmlEditor('txtPatronalProposta');
- $txtPatronalAnalise = new THtmlEditor('txtPatronalAnalise');
- $txtSindicalProposta = new THtmlEditor('txtSindicalProposta');
- $txtSindicalAnalise = new THtmlEditor('txtSindicalAnalise');
- $txtAcordadoClausula = new THtmlEditor('txtAcordadoClausula');
- $txtAcordadoAnalise = new THtmlEditor('txtAcordadoAnalise');
- $actDtAcordo = new TDate('actDtAcordo');
- $actTipo = new TEntry('actTipo');
- $titulo_id = new TDBUniqueSearch('titulo_id', 'artdb', 'Titulo', 'id', 'ttlTitulo');
- $sub_titulo_id = new TDBUniqueSearch('sub_titulo_id', 'artdb', 'SubTitulo', 'id', 'sttSubTitulo');
- $classificacao_id = new TDBUniqueSearch('classificacao_id', 'artdb', 'Classificacao', 'id', 'claClassificacao');
- $data_base_id = new TDBUniqueSearch('data_base_id', 'artdb', 'DataBase', 'id', 'dtbDataBase');
- // add the fields
- $this->form->addFields( [ new TLabel('Id') ], [ $id ] );
- $this->form->addFields( [ new TLabel('Nº Vigente') ], [ $actNumeroVig ] );
- $this->form->addFields( [ new TLabel('Actstatus') ], [ $actStatus ] );
- $this->form->addFields( [ new TLabel('Actnome') ], [ $actNome ] );
- $this->form->addFields( [ new TLabel('Actorientadir') ], [ $actOrientaDir ] );
- $this->form->addFields( [ new TLabel('Observação') ], [ $actObs ] );
- $this->form->addFields( [ new TLabel('Actgrupo') ], [ $actGrupo ] );
- $this->form->addFields( [ new TLabel('Actordemclausula') ], [ $actOrdemClausula ] );
- $this->form->addFields( [ new TLabel('Actvigini') ], [ $actVigIni ] );
- $this->form->addFields( [ new TLabel('Actvigfim') ], [ $actVigFim ] );
- $this->form->addFields( [ new TLabel('Txtorientdir') ], [ $txtOrientDir ] );
- $this->form->addFields( [ new TLabel('Txtgdfemater') ], [ $txtGdfEmater ] );
- $this->form->addFields( [ new TLabel('Txtgdftcb') ], [ $txtGdfTcb ] );
- $this->form->addFields( [ new TLabel('Txtgdfnovacap') ], [ $txtGdfNovacap ] );
- $this->form->addFields( [ new TLabel('Txtgdfceasa') ], [ $txtGdfCeasa ] );
- $this->form->addFields( [ new TLabel('Txtgdfcodeplan') ], [ $txtGdfCodeplan ] );
- $this->form->addFields( [ new TLabel('Txtgdfcodhab') ], [ $txtGdfCodhab ] );
- $this->form->addFields( [ new TLabel('Txtgdfterracap') ], [ $txtGDFTerracap ] );
- $this->form->addFields( [ new TLabel('Txtgdfceb') ], [ $txtGdfCeb ] );
- $this->form->addFields( [ new TLabel('Txtgdfcaesb') ], [ $txtGdfCaesb ] );
- $this->form->addFields( [ new TLabel('Txtgdfbrb') ], [ $txtGdfBrb ] );
- $this->form->addFields( [ new TLabel('Txtgdfsab') ], [ $txtGdfSab ] );
- $this->form->addFields( [ new TLabel('Txtvigenteclausula') ], [ $txtVigenteClausula ] );
- $this->form->addFields( [ new TLabel('Txtvigenteanalise') ], [ $txtVigenteAnalise ] );
- $this->form->addFields( [ new TLabel('Txtpatronalproposta') ], [ $txtPatronalProposta ] );
- $this->form->addFields( [ new TLabel('Txtpatronalanalise') ], [ $txtPatronalAnalise ] );
- $this->form->addFields( [ new TLabel('Txtsindicalproposta') ], [ $txtSindicalProposta ] );
- $this->form->addFields( [ new TLabel('Txtsindicalanalise') ], [ $txtSindicalAnalise ] );
- $this->form->addFields( [ new TLabel('Txtacordadoclausula') ], [ $txtAcordadoClausula ] );
- $this->form->addFields( [ new TLabel('Txtacordadoanalise') ], [ $txtAcordadoAnalise ] );
- $this->form->addFields( [ new TLabel('Actdtacordo') ], [ $actDtAcordo ] );
- $this->form->addFields( [ new TLabel('Acttipo') ], [ $actTipo ] );
- $this->form->addFields( [ new TLabel('Titulo Id') ], [ $titulo_id ] );
- $this->form->addFields( [ new TLabel('Sub Titulo Id') ], [ $sub_titulo_id ] );
- $this->form->addFields( [ new TLabel('Classificacao Id') ], [ $classificacao_id ] );
- $this->form->addFields( [ new TLabel('Data Base Id') ], [ $data_base_id ] );
- // set sizes
- $id->setSize('100%');
- $actNumeroVig->setSize('100%');
- $actStatus->setSize('100%');
- $actNome->setSize('100%');
- $actOrientaDir->setSize('100%');
- $actObs->setSize('100%');
- $actGrupo->setSize('100%');
- $actOrdemClausula->setSize('100%');
- $actVigIni->setSize('100%');
- $actVigFim->setSize('100%');
- $txtOrientDir->setSize('100%');
- $txtGdfEmater->setSize('100%');
- $txtGdfTcb->setSize('100%');
- $txtGdfNovacap->setSize('100%');
- $txtGdfCeasa->setSize('100%');
- $txtGdfCodeplan->setSize('100%');
- $txtGdfCodhab->setSize('100%');
- $txtGDFTerracap->setSize('100%');
- $txtGdfCeb->setSize('100%');
- $txtGdfCaesb->setSize('100%');
- $txtGdfBrb->setSize('100%');
- $txtGdfSab->setSize('100%');
- $txtVigenteClausula->setSize('100%');
- $txtVigenteAnalise->setSize('100%');
- $txtPatronalProposta->setSize('100%');
- $txtPatronalAnalise->setSize('100%');
- $txtSindicalProposta->setSize('100%');
- $txtSindicalAnalise->setSize('100%');
- $txtAcordadoClausula->setSize('100%');
- $txtAcordadoAnalise->setSize('100%');
- $actDtAcordo->setSize('100%');
- $actTipo->setSize('100%');
- $titulo_id->setSize('100%');
- $sub_titulo_id->setSize('100%');
- $classificacao_id->setSize('100%');
- $data_base_id->setSize('100%');
- if (!empty($id))
- {
- $id->setEditable(FALSE);
- }
- /** samples
- $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
- $fieldX->setSize( '100%' ); // set size
- **/
- // create the form actions
- $btn = $this->form->addAction(_t('Save'), new TAction([$this, 'onSave']), 'fa:floppy-o');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addAction(_t('New'), new TAction([$this, 'onEdit']), 'fa:eraser red');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('artdb'); // open a transaction
- /**
- // Enable Debug logger for SQL operations inside the transaction
- TTransaction::setLogger(new TLoggerSTD); // standard output
- TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
- **/
- $this->form->validate(); // validate form data
- $data = $this->form->getData(); // get form data as array
- $this->form->setData($data); // put the data back to the form "Cleiton"
- $object = new Clausula; // create an empty object
- $object->fromArray( (array) $data); // load the object with data
- $object->store(); // save the object
- // get the generated id
- $data->id = $object->id;
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear(TRUE);
- }
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key']; // get the parameter $key
- TTransaction::open('artdb'); // open a transaction
- $object = new Clausula($key); // instantiates the Active Record
- $this->form->setData($object); // fill the form
- TTransaction::close(); // close the transaction
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- }
- ?>
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.
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...
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...
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.
Os campos estão estão como LongText...
será que é isso???
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...
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...