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 :

Validation de formulaire par AJAX


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 260
    Points : 142
    Points
    142
    Par défaut Validation de formulaire par AJAX
    Bonjour,
    Je voudrais savoir comment faire valider ses formulaires sans recharger la page, un peu comme le formulaire d'inscription sur twitter par exemple.
    Lorsque vous remplissez un champ, il est automatiquement validé et un message s'affiche pour informer si les données sont conformes ou pas. J'imagine que cela se fait via AJAX. Y a-t-il un moyen "symfonique" de réaliser cela ? Merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut
    Créé une requête asynchrone sur le déclenchée par le click de validation du formulaire.

    En javascript:
    - Stop l'action pour que le formulaire ne se "submit" pas.
    - Requête asynchrone en post ou tu y met les données de ton formulaire. L'URL va être celle de ton formulaire que tu peux récupérer dans le javascript.

    Tu récupère tout ça normalement dans ton contrôleur "symfo-nique" comme tu dis.

    Bien sur, retourne un résultat ! Tu le traite en javascript pour afficher si l'action a marché ou non. Tant qu'a faire, retourne les erreurs le cas échéant.

    Un exemple vite fait avec mootools (non testé).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $('myForm').addEvent('submit', function(key) {
    	key.stop();
    	var options = {
    		url : $('myForm').action,
    		method : 'post',
    		onSuccess: function() {
    		// ici tu traite ton résultat
    	};
    	new Request(options).post();
    });

  3. #3
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    Voici un tout petit exemple, en trois parties (xhtml/JS/PHP)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form id="monform" action="<?php echo url_for('@traiteMonForm')?>" method="post">
      <!-- Les champs ici avec renderRow() -->
      <p><input type="submit"/></p>
    </form>
    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
    // avec JQuery
    $('#monform').submit(function(){
      var form = $(this);
      var action = form.attr('action');
      var method = form.attr('method');
      $.ajax({
        url: action,
        method: method,
        data: form.serialize(),
        success: function(response){
          // traitement de la réponse ici
        }
      });
      return false;
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    public function executeTraiteMonForm(sfWebRequest $request){
      $this->forward404Unless($request->isXmlHttpRequest()); // optionnel
     
      $form = new MonForm();
      // Traitements et validation du formulaire
     
      /* Pour retourner le résultat du traitement, on peut renvoyer au JS du JSON (json_encode) par exemple
      ou un simple 0/1... Tout cela avec renderText() */
    }
    ?>

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    J'ai plus simple...

    Première chose, il ne faut surtout pas désactiver la validation en php y compris l'éventuel renvois du formulaire, pour le cas où l'utilisateur n'aurait pas de JS actif sur son poste (faut bien valider) ou encore, celui qui modifierait le paquet POST avant l'envoie...

    Tu as un plugin qui prend les validators et les utilises en JS pour pré-valider le formulaire, il marche avec 95% des validators, ce qui n'est déjà pas si mal.

    Le plugin : sfJqueryFormValidationPlugin et tu n'as rien à retoucher.

Discussions similaires

  1. [AJAX] Validation Formulaire par ajax
    Par freak999 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2009, 22h49
  2. valider un formulaire par mail
    Par guillaume2vo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 16/09/2006, 09h07
  3. [W3C] valider un formulaire par W3C
    Par 18Marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/06/2006, 19h04
  4. Valider un formulaire par un lien et non par un bouton
    Par budiste dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 11h58
  5. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50

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