Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
validar dados e salvar data Não consigo validar os dados e em seguida salvar data. ...
LA
validar dados e salvar data  
Não consigo validar os dados e em seguida salvar data.

  1. <?php
  2.         //Validações #1
  3.         $nome->addValidation('NOME', new TRequiredValidator);
  4. // Botão
  5.         $this->form->addAction(_t('Save'), new TAction(array($this'validar')), 'ico_save.png');
  6. //Função
  7.     public function validar($param) {
  8.         $dados $this->form->getData($this->activeRecord);
  9.         $this->form->setData($dados);
  10. //Validações #2        
  11. $validar $this->form->getField('cpf');
  12.         $i strlen(trim($dados->cpf));
  13.         if ($i 0) {
  14.             switch ($i) {
  15.                 case $i <= 11:
  16.                     $validar->addValidation('CPF', new TCPFValidator);
  17.                     break;
  18.                 case $i >= 12:
  19.                     $validar->addValidation('CNPJ', new TCNPJValidator);
  20.                     break;
  21.             }
  22.         }
  23.         //Salvar formato US
  24.         TTransaction::open($this->database);
  25.         $dados->data_reg TDate::date2us($dados->data_reg);
  26.         $dados->store();
  27.         TTransaction::close();
  28.         //Carregar formato BR
  29.         $dados->data_reg TDate::date2br($dados->data_reg);
  30.         $this->form->setData($dados);
  31.     }
  32. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (3)


NR

Em que momento você chama a função validate?
LA

ola Nataniel,
onde devo chamar essa função?

  1. <?php
  2. $this->form->validate();
  3. $dados->store();
  4. TTransaction::close();
  5. //Carregar formato BR
  6. ?>


Já tentei assim, mas aparece erros de execução abaixo da mensagem.

  1. <?php
  2. <b>O campo CPF não contém um CPF válido.</b>
  3.  
  4. File: \lib\adianti\wrapper\BootstrapFormBuilder.php 226
  5.   Adianti\Widget\Form\TForm->validate()
  6. File: \app\control\TesteForm.class.php 219
  7.   Adianti\Wrapper\BootstrapFormBuilder->validate(TesteForm,validar,...)
  8. File: :
  9.   TesteForm->validar(TesteForm,validar,...)
  10. File: \lib\adianti\control\TPage.php 51
  11.   call_user_func(TesteForm,validar,TesteForm,validar,...)
  12. File: \lib\adianti\control\TPage.php 205
  13.   Adianti\Control\TPage->run()
  14. File: \lib\adianti\core\AdiantiCoreApplication.php 62
  15.   Adianti\Control\TPage->show(TesteForm,validar,...)
  16. File: \engine.php 33
  17.   Adianti\Core\AdiantiCoreApplication::run(1)
  18. File: \engine.php 47
  19.   TApplication::run(1)
  20. ?>

NR

A chamada à função validate deve estar dentro de um try/catch, pois as mensagens de erro são retornadas como exceções.
  1. <?php
  2. try
  3. {
  4.    ...
  5.    $this->form->validate();
  6.    ...
  7. }
  8. catch(Exception $e)
  9. {
  10.      new TMessage('error',$e->getMessage());
  11. }
  12. ?>