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 :

comparer les champs d'un formulaire [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Par défaut comparer les champs d'un formulaire
    Bonjour,
    Alors je souhaite, dans un formulaire, que l'utilisateur qui entre une adresse mail, l'entre une deuxième fois dans un autre champs afin de vérifier qu'il ne fait pas une erreur de frappe.
    Lorsque je développais en dehors de symfony, j'avais cette petite fonction en javascript qui marchait bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function verifMail(input) 
     {
          if (input.value != document.getElementById('mail').value) 
          {
               input.setCustomValidity('Les deux courriels ne correspondent pas.');
          } 
          else 
          { 
            // le champ est valide : on réinitialise le message d'erreur
               input.setCustomValidity('');
          }
     }

    Mais à présent, j'ai un formulaire comme ci-dessous, et je ne vois vraiment pas comment faire appel à du javascript pour gérer la comparaison des deux champs au moment de la validation.
    Mon code:
    Code php : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
       public function AjoutAction()
        {
            $adherent=new Adherent(); 
     
            // construction du formulaire
            $build= $this->createFormBuilder($adherent);
            $build
                ->add('Nom', 'text', array('max_length' => 60, 'required' => true, 'label' => 'Nom*: ', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('Prenom', 'text', array('max_length' => 60, 'required' => true, 'label' => 'Prénom*: ', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('Email', 'text', array('max_length' => 100, 'required' => true, 'label' => 'Courriel*: ', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('VerifEmail', 'text', array('max_length' => 100, 'required' => true, 'label' => 'Retapez le courriel*', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('Adresse', 'textarea', array('required' => true, 'label' => 'Adresse*:', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('TelFixe', 'text', array('max_length' => 10, 'required' => false, 'label' => 'Tél fixe:', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('TelPortable', 'text', array('max_length' => 10, 'required' => false, 'label' => 'Tél portable:', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('password', 'password', array('max_length' => 20, 'required' => true, 'label' => 'Mot de passe*:', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
                ->add('verifMotdePasse', 'password', array('max_length' => 20, 'required' => true, 'label' => 'Retapez le mot de passe*:', 'trim' => true, 'read_only' => false, 'error_bubbling' => false));
     
            $form=$build->getForm();
     
            // récupération du résultat du formulaire
            $request = $this->get('request');
            if($request->getMethod() == 'POST')
            { 
                $form->bind($request);
                if($form->isValid()) // si tout ok, on finit de remplir les attributs
                {
                    $adherent->setUsername($adherent->getEmail());
                    $adherent->setCotise(true);
                    $adherent->setActif(true);
     
                    // et on met la bdd à jour
                    $em = $this->getDoctrine()->getManager();                
                    $em->persist($adherent);
                    $em->flush();
     
                    // on affiche la page d'accueil de gestion des adhérents
                    return $this->redirect($this->generateUrl('bam_adherent_homepage'));
                }
            }
     
            // si pas de validation de formulaire, on affiche les formulaire
            return $this->render('BAMAdherentBundle:Default:ajout.html.twig', array('form'=>$form->createView()));
        }

    Quelqu'un pourrait-il m'expliquer comment je pourrais m'en sortir, s'il vous plaît?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Par défaut
    Oulala, je n'ai plus les yeux en face des trous ce soir!
    Je n'avais même pas vu la réponse toute faite sur google!

    alors je vous la transmet quand même hein, c'est tellement facile (et dire que j'ai galéré toute l'après-midi pour ça, pffffff!!!!):
    Il suffit de créer les champs du formulaire ainsi:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
           $build
                 ->add('Email', 'repeated', array(
                    'type' => 'email',
                    'invalid_message' => 'Les emails doivent correspondre',
                    'options' => array('required' => true),
                    'first_options'  => array('label' => 'Email*:'),
                    'second_options' => array('label' => 'Répétez votre email*:')))

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/07/2012, 17h38
  2. Comment récuperer les champs d'un formulaire?
    Par steeves5 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2006, 10h54
  3. [DREAMWEAVER 8] Comment tester les champs d'un formulaire
    Par steeves5 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/02/2006, 21h43
  4. Réponses: 4
    Dernier message: 16/09/2005, 14h27
  5. Réponses: 18
    Dernier message: 22/10/2004, 14h49

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