Bonjour,
je fais appel à vos connaissances pour un problème que je ne comprend pas trop...
J'ai un formulaire permettant d'enregistrer des données d'une personne membre.
Dans celui-ci, j'ai un champ qui correspond à un numéro de personne. Ce n'est pas l'id de la personne, c'est un numéro (integer) qui est attribué a certaines personnes.
Il n'est pas obligatoire, mais s'il est rempli dans le formulaire, il doit être unique s'il est plus grand que 0.
J'ai donc fait un validator pesonnalisé qui test comme ceci :
Puis la fonction utilisée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->validatorSchema['no_equipier'] = new sfValidatorCallback(array('callback' => array($this, 'check_exist_no_eqp')));
Seulement ce validator n'affiche le message d'erreur 'Ce numéro est déjà utilisé !' que si le formulaire est un "new". Pour une édition d'une personne existante, il valide correctement, mais n'affiche pas le message d'erreur. Il revient simplement sur le formulaire sans dire quel champ pose problème....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public function check_exist_no_eqp($validator, $values) { $noExist = false; //si c'est "new", la personne n'a pas encore d'id, donc on met l'id à 0 pour qu'il controle le No de tous les équipiers, sinon l'id de la personne if ($this->getObject()->isNew()){ $id = 0; }else{ $id = $this['id']->getValue(); } if ($values > 0) $noExist = Doctrine_Core::getTable('Equipier')->isExistSameNoEquipier($values, $id); //S'il existe déjà on retourne une erreur if ($noExist) { throw new sfValidatorError($validator, 'Ce numéro est déjà utilisé !'); } return $values; }
Savez-vous pourquoi ? Merci d'avance pour votre coup de main.
a+ Miam
Partager