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 Ajax formulaire [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut Validation Ajax formulaire
    Bonjour,

    Alors mon problème est simple.
    Je souhaite valider mon formulaire symfony champ par champ en ajax.
    J'utilise donc un observe_field qui me mène à une action et dans cette action je veux valider le champ en utilisant le validator qui lui est définit.

    Dans form:
    $this->setValidators(array(
    'nom' => new sfValidatorAnd(array( new sfValidatorRegex(array('pattern' => '/^[a-zA-Zïëêîöéèçàùôâä][a-zA-Zïëêîöéèçàùôâä -_]*$/')),),array('required' => true),array('required' => 'Ce champ est obligatoire','invalid' => "Votre nom n'est pas valide")),

    ));
    Dans action:
    public function executeVerifierNom()
    {
    $chaine_a_verifier = $this->getRequestParameter("nom");
    $array_erreur = array();

    // Récupère le validateur du nom définit dans lib/form
    $form = new monForm();
    $validateur_form = $form->getValidatorSchema();
    $all_validators_field = $validateur_form->getFields();
    $validators = $all_validators_field["nom"];

    //Ici je dois executer le validator et contrôler son retour mais impossible, je ne trouve pas la fonction

    $result = $this->getPartial("ajax_error",array("reussi"=>$reussi));
    return $this->renderText($result);
    }
    Si vous avez déjà réalisé quelques choses dans le genre, merci.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Jamais utilisé, mais dans l'idée de faire un truc du genre un jour....


    Première piste, non utilisé, as-tu consulté les plugins... au cas où ?

    Deuxième idée, (mais que de taf). créer des enfants pour tous les plugins de vérification pour retourner un tableau javascript avec le nom du champ, les tests, les valeurs, les messages. Ensuite un joli script sur jquery (ou prototype) qui récupère le tableau et effectue les validations en automatique dans ton formulaire.

    Faudrait voir aussi du côté de la v2 le truc semble si naturel qu'il doit y avoir dans les 1500 développeurs qui y pensent.

    Et surtout, il faut TOUT revérifier à l'arrivé du formulaire en POST si ton gugus n'utilise pas de java sur son poste ou s'il a trafiqué les datas envoyée en POST avant l'envoie des données.

    Mais j'adore l'idée.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut Reponse
    Voilà ça fait un moment que je ne suis pas venu sur le forum et je viens de voir que j'ai laissé ce post sans réponse.

    Déjà merçi pour ta réponse, elle existe en fait déjà sous forme de plugin mais permet de pouvoir vérifier tout les champs à la validation du formulaire en javascript. Moi je voulais pouvoir contrôler dès que je quitte un champ son validateur symfony correspondant et retourner l'erreur si besoin. Très générique et évite de dupliquer les validateurs.

    La solution est simple, il suffit juste de faire :
    try{
    $resultat = $validators->clean($chaine_a_verifier);
    $reussi = 1;
    $msg_error = '';
    }catch (sfValidatorError $e){
    $reussi = 0;
    $msg_error = (String)$e;
    }

    En gros l'exception retourné est le message d'erreur et du coup si une erreur est retourné on peut passer $reussi au template pour afficher un picto correspondant par exemple.

    En espérant que ça aide certain dans la validation d'un formulaire en ajax.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Juste ne pas oublier de re vérifier lors du retour du php tous les tests. Ce n'est pas parce-qu'il est validé en java qu'il ne peut pas être modifé ou arriver par un formulaire qui n'avait pas de java...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/05/2008, 23h19
  2. [AJAX] Validation de formulaire
    Par shaun_the_sheep dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/03/2008, 17h02
  3. [AJAX] valider un formulaire avec une fonction ajax
    Par freums dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/02/2008, 11h34
  4. validation de formulaire avec ajax
    Par debutant_linux dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 25/01/2008, 15h01
  5. [AJAX] Rendre full ajax un script de validation de formulaire
    Par Darkenshin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2008, 23h58

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