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 :

[Form] formulaire en AJAX


Sujet :

Symfony PHP

  1. #1
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut [Form] formulaire en AJAX
    bonjour,

    j'ai besoin de quelques éclaircissements concernant les formulaires en ajax.
    j'ai suivie le tuto http://j-place.developpez.com/tutori...-symfony2/#LIV

    la VUE
    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
    20
    21
    22
    23
    24
    25
     
    <form id="form_recherche" action="{{ path('myapp_acteur_rechercher') }}" method="post">
        {{ form_widget(form) }}
        <input type="submit" value="Rechercher" />
    </form>
    ...
    <script>
    $(".loading").hide();
    $("#form_recherche").submit(function(){ 
        $(".loading").show();
        var motcle = $("#acteurrecherche_motcle").val();
        var DATA = 'motcle=' + motcle;
        $.ajax({
            type: "POST",
            url: "{{ path('myapp_acteur_rechercher')}}",
            data: DATA,
            cache: false,
            success: function(data){
               $('#resultats_recherche').html(data);
               $(".loading").hide();
            }
        });    
        return false;
    });
    </script>
    le CONTROLLEUR :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public function rechercherAction()
    {               
        $request = $this->container->get('request');
     
        if($request->isXmlHttpRequest())
        {
            $motcle = '';
            $motcle = $request->request->get('motcle');
     
            $em = $this->container->get('doctrine')->getEntityManager();
     
            if($motcle != '')
            {
                   $qb = $em->createQueryBuilder();
     
                   $qb->select('a')
                      ->from('MyAppFilmothequeBundle:Acteur', 'a')
                      ->where("a.nom LIKE :motcle OR a.prenom LIKE :motcle")
                      ->orderBy('a.nom', 'ASC')
                      ->setParameter('motcle', '%'.$motcle.'%');
     
                   $query = $qb->getQuery();               
                   $acteurs = $query->getResult();
            }
            else {
                $acteurs = $em->getRepository('MyAppFilmothequeBundle:Acteur')->findAll();
            }
     
            return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundle:Acteur:liste.html.twig', array(
                'acteurs' => $acteurs
                ));
        }
        else {
            return $this->listerAction();
        }
    }

    ma question est quel intérêt d'utiliser un form dans la vue puisque même au niveau sécurité le CRSF token n'est même pas pris en compte dans le controlleur(enfin il ne me semble pas sauf erreur)

    dans ce cas, pourquoi au lieu du <form> ... </form> ne pas mettre un bouton qui lance la requête ajax ?

  2. #2
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Il faut que tu uilise isValid du formBuilder pour valider les données de ton formulaire.

    voir exemple ici :
    http://symfony.com/doc/2.0/book/forms.html

  3. #3
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    ok donc c'est le tuto qui est mal foutu, pourquoi avoir fait un tuto sur le form ajax si au final ce n'est pas pour utiliser les spécificités d'un formulaire(validation, ...)

    enfin !


    merci pour ta réponse

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    bonsoir,
    Le tuto n'est pas mal fait. Juste c'est un exemple d'utilisation du xhtml pour effectuer un module de recherche et à la question pourquoi utiliser un form -> bonne pratique web : ne pas utiliser du javascrip invasif et donc si la personne désactive le dit javascript la fonctionnalité est toujours en route. voila

  5. #5
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    ok merci bien pour le complément de précision.

    j'ai toujours besoin d'aide.

    mon controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            if ($this->container->get('request')->isMethod('POST')) {
                $formBuilder = $this->createFormBuilder(new Presentation());                
                $formBuilder
                ->add('texte', 'hidden' );
                $form = $formBuilder->getForm();                 
                $form->bind($this->container->get('request'));
                if ($form->isValid()) {
                    if ($request->isXmlHttpRequest()) {
                        $response = new Response("ok form");	
                        $response->headers->set('Content-Type', 'application/json');	                     
                        return $response;    
                    }
                }
    ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <form id="form_presentation" action="{{ path('save_presentation_ajaxrq') }}" method="post" {{ form_enctype(form) }}>
        {{ form_widget(form) }}
        </form>


    le soucis est qu'il ne passe jamais dans le isValid(). une idée ?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Form et Events
    Salut ! le test getMethod==POST sert à verifier si le formulaire vient d'etre envoyé par "Submit" (traitement quoi) ou sinon, c'est GET et la page est affiché normalement (affichage du form). Donc le formulaire doit être créer avant ce test ou bien il te faut utiliser les formevents pour modifier le form apres affichage mais avant l'envoie !
    je te conseille vivement d'aller jeter un oeuil dans la doc des forms : http://symfony.com/fr/doc/current/book/forms.html
    Et les exemples formEvents du cookbook : http://symfony.com/doc/current/cookb...ification.html

Discussions similaires

  1. [2.x] [Form] Formulaire AJAX avec validation
    Par dukoid dans le forum Symfony
    Réponses: 1
    Dernier message: 12/03/2013, 08h29
  2. [AJAX] Poster un formulaire avec AJAX
    Par faico dans le forum AJAX
    Réponses: 10
    Dernier message: 22/03/2010, 17h12
  3. [DOM] [form] [ajax]compatibilité entre formulaire et ajax
    Par globz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/09/2008, 15h30
  4. Réponses: 1
    Dernier message: 23/05/2008, 23h19
  5. Mise en forme formulaire
    Par sophieric dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/09/2006, 15h56

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