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

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)


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. File: \lib\adianti\wrapper\BootstrapFormBuilder.php : 226
  4. Adianti\Widget\Form\TForm->validate()
  5. File: \app\control\TesteForm.class.php : 219
  6. Adianti\Wrapper\BootstrapFormBuilder->validate(TesteForm,validar,...)
  7. File: :
  8. TesteForm->validar(TesteForm,validar,...)
  9. File: \lib\adianti\control\TPage.php : 51
  10. call_user_func(TesteForm,validar,TesteForm,validar,...)
  11. File: \lib\adianti\control\TPage.php : 205
  12. Adianti\Control\TPage->run()
  13. File: \lib\adianti\core\AdiantiCoreApplication.php : 62
  14. Adianti\Control\TPage->show(TesteForm,validar,...)
  15. File: \engine.php : 33
  16. Adianti\Core\AdiantiCoreApplication::run(1)
  17. File: \engine.php : 47
  18. TApplication::run(1)
  19. ?>

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