IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Validator sur formulaire qui n'affiche l'erreur de validation que lors du create [1.x]


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Points : 37
    Points
    37
    Par défaut Validator sur formulaire qui n'affiche l'erreur de validation que lors du create
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->validatorSchema['no_equipier'] = new sfValidatorCallback(array('callback' => array($this, 'check_exist_no_eqp')));
    Puis la fonction utilisée :
    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;
        }
    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....

    Savez-vous pourquoi ? Merci d'avance pour votre coup de main.
    a+ Miam

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Points : 56
    Points
    56
    Par défaut
    Pourquoi te compliquer la tache , ill te suffit de definir ce champ comme dans ton schema.yml.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par phpestpuissant Voir le message
    Pourquoi te compliquer la tache , ill te suffit de definir ce champ comme dans ton schema.yml.
    Oui j'y avais pensé, mais comme je l'ai dit, il doit être unique s'il est plus grand que 0. Cela veut dire, que je pourrais avoir plusieurs 0, -1 ou autres... Dans ce cas là, l'index unique serait problématique, je dois donc le faire manuellement...
    Merci quand même pour la réponse. Si vous avez d'autres solutions...

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Ok ben le problème venait de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this['id']->getValue();
    qui ne retourne pas toujours qqch visiblement...

    Problème résolu avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getObject()->get('id');
    Bon weekend

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Valider un formulaire qui se trouve dans une autre zone sur la même page
    Par Globolite dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/10/2012, 12h34
  2. [ZF 1.11] Element file formulaire qui n'affiche pas les erreurs
    Par absot dans le forum Zend_Form
    Réponses: 3
    Dernier message: 25/11/2011, 10h52
  3. Réponses: 8
    Dernier message: 22/04/2011, 21h27
  4. Valider un formulaire qui se trouve sur un autre frame
    Par laurent_diep dans le forum ASP
    Réponses: 1
    Dernier message: 23/10/2008, 17h20
  5. Réponses: 11
    Dernier message: 27/06/2006, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo