{parts/gtag_head.html} {parts/gtag_body.html}
Conheça  A Ferramenta LowCode mais moderna e veloz para desenvolvimento PHP: Adianti Creator
TUniqueValidator Necessitei criar uma validação para campos únicos e espero que possa servir de ajuda a alguém... Segue o código da classe: ...
FO
TUniqueValidator  
Fechado
Necessitei criar uma validação para campos únicos e espero que possa servir de ajuda a alguém...

Segue o código da classe:

 
  1. <?php
  2. class TUniqueValidator extends TFieldValidator
  3. {
  4. private $database;
  5. private $model;
  6. private $field;
  7. private $value;
  8. private $id;
  9. public function validate($label, $value, $parameters = NULL)
  10. {
  11. $this->id = $parameters['id'];
  12. $this->model = $parameters['model'];
  13. $this->field = $parameters['field'];
  14. $this->value = $value;
  15. $this->database = $parameters['database'];
  16. if (!$this->checkUnique())
  17. {
  18. throw new Exception("$label já cadastrado no banco de dados");
  19. }
  20. }
  21. private function checkUnique()
  22. {
  23. try
  24. {
  25. TTransaction::open($this->database);
  26. $repository = new TRepository($this->model);
  27. $criteria = new TCriteria;
  28. $criteria->add(new TFilter($this->field, '=', $this->value));
  29. if (($this->id) && ($this->id <> '') && (!is_null($this->id)))
  30. {
  31. $criteria->add(new TFilter('id', '<>', $this->id));
  32. }
  33. $count = $repository->count($criteria);
  34. TTransaction::close();
  35. return ($count <= 0);
  36. }
  37. catch (Exception $e)
  38. {
  39. new TMessage('error', $e->getMessage());
  40. TTransaction::rollback();
  41. }
  42. }
  43. }
  44. ?>


Eu tentei de toda maneira implementar ele na construção do formulário mas não consegui, então um exemplo prático de sua utilização é adicionar o seguinte código no evento onSave do seu formulário:

 
  1. <?php
  2. //validation Unique
  3. $uniqueValidator = new TUniqueValidator;
  4. $uniqueValidator->validate('CPF', $object->cpf, array('database' => 'ieadb', 'model' => 'Member','field' => 'cpf', 'id' => $object->id));
  5. ?>

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


FC

Bacana, mas para isso eu apenas coloco como único no banco e trato a exceção.
DD

criei o arquivo TUniqueValidator.php na pasta libadiantivalidator, mas ao chamá-lo de dentro de um programa que está no appcontrol me dá o erro como se não encontrasse o TUniqueValidator.php. Como eu adiciono ele no path para ser reconhecido? ou tenho que usar o include dele ou use ?
JB

Felipe Cortez, pode me ajudar demonstrando como fez?
Estou iniciando no framework e quero fazer a validação da mesma maneira que você.
EM

Como faço para validar mais de um capo, tipo; estados e cidades. Eles não podem ser repetidos. E como passar dois argumentos para a validação? Já estou a dias tentando isso, agradeço se poder me ajudar.