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 :

Symfony2 Form + Ajax: Récupérer les valeurs envoyées par un formulaire avec Ajax


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Points : 47
    Points
    47
    Par défaut Symfony2 Form + Ajax: Récupérer les valeurs envoyées par un formulaire avec Ajax
    Bonjour,

    J'ai externalisé mon formulaire dans une classe.
    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
     
    class rechercheFormType extends AbstractType
    {
            /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
     
                ->add('dateDebut', DateTimeType::class, array(
                    'date_widget' => 'single_text',
                    'data' => new \DateTime('-1 day 06:30'),
                    'attr'=>array('id'=>'dateDebut')))
     
                ->add('dateFin', DateTimeType::class, array(
                    'date_widget' => 'single_text',
                    'data' => new \DateTime('now 07:30'),
                    'attr'=>array('id'=>'dateFin')))
                ->add('rechercher', SubmitType::class, array('label'=>'rechercher','attr'  => array('class' => 'btn btn-primary')))
     
     
            ;
        }
     
     
    }
    Mon controller construit mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function searchAction(Request $request){
     
           $form   = $this->createForm(new rechercheFormType());
     
           if ($request->getMethod() == 'POST') {
               $form->handleRequest($request);
               $data = $form->getData();
     
           }else{
               return $this->render('PQTMainBundle:Pqt:search.html.twig', array('form' => $form->createView() ));
           }
     
       }
    J'ai ma vue "search.html.twig" qui affiche ce formulaire:
    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
     
    <form action="{{ path('ma route') }}" method="POST" class="form-inline" >
                <div class="well">
                    <span class="row">
     
                        <span class="col-md-3 ">
                            {{ form_errors(form.dateDebut) }}
                            {{ form_label(form.dateDebut) }}
                            {{ form_widget(form.dateDebut) }}
     
                        </span>
                        <span class="col-md-3">
                            {{ form_errors(form.dateFin) }}
                            {{ form_label(form.dateFin) }}
                            {{ form_widget(form.dateFin) }}
                        </span>
                        <span class="col-md-1">
                            {{ form_label(form.dateFin) }}
                            {{ form_widget(form.rechercher) }}
                        </span>
                    </span>
                </div>
                {{ form_rest(form) }}
            </form>
    Je voudrais dans la vue "search.html.twig" pouvoir lors du submit lancer une requête ajax qui:

    Me récupère les valeurs du formulaire
    Lance une requete (route->controller->action)
    M'affiche en dessous du formulaire dans une "div" le résultat
    Je ne sais pas trop comment organiser tout ça du coté du contrôleur.

    Quelqu'un peut-il m'orienter ou me conseiller.

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    Bonjour,
    rien de compliqué du tout .
    la vue search.twig.html contient du code javasccript ( ajax+Jquery) , un event javascript pour lancer l'appel ajax .
    l'url ajax est une route exposable.
    cette route corresponds à une action controlleur avec xmlhttprequest et qui retourne neew reponse json.
    du coté de l'ajaxx , on success on recupere le json result de l'action

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Points : 47
    Points
    47
    Par défaut
    Merci pour ton retour ,

    Je suis encore très novice sur symfony.

    J'ai essayé de prendre en compte tes conseils mais soit indulgent avec moi

    J'ai modifié mon formulaire en appelant ma fonction javascript sur un onsubmit
    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
     
    <form  method="POST" class="form-inline" id="monForm" onsubmit="showResultat(this.id)">
                <div class="well">
                    <span class="row">
                        <span class="col-md-3 ">
                            {{ form_errors(form.dateDebut) }}
                            {{ form_label(form.dateDebut) }}
                            {{ form_widget(form.dateDebut) }}
     
                        </span>
                        <span class="col-md-3">
                            {{ form_errors(form.dateFin) }}
                            {{ form_label(form.dateFin) }}
                            {{ form_widget(form.dateFin) }}
                        </span>
                        <span class="col-md-1">
                            {{ form_label(form.dateFin) }}
                            {{ form_widget(form.rechercher ) }}
                        </span>
                    </span>
                </div>
                {{ form_rest(form) }}
            </form>
    J'essai de récupérer dans la fonction js "showResultat" un des champs de mon formulaire pour l'envoyer à mon contrôler.
    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
     
    <script type="text/javascript">
            function showResultat(id) {
     
                var dateDebut = document.id.dateDebut.value;
     
                alert(dateDebut);
     
                $.ajax({
                    type: "GET",
                    url: "{{ path('monpath') }}",
                    data: {'dateDebut': dateDebut},
                    cache: false,
                    success: function (data) {
                        $('#recherche').html(data);
                    }
                });
     
                return false;
     
            }
        </script>
    Ici l'alerte n'affiche rien du tout

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    voila un exemple de recherche instantanée http://blog.arnaud-k.fr/2010/09/14/t...erche-en-ajax/
    c'est du php native ok , mais c'est presque la même chose

Discussions similaires

  1. Effacer les valeurs envoyées par le formulaire
    Par abj8077 dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2010, 08h45
  2. Récupérer les données envoyées par une tablette graphique
    Par greg08 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 02/06/2010, 06h04
  3. [AJAX] récupérer une valeur envoyé par ajax
    Par ineskh dans le forum AJAX
    Réponses: 3
    Dernier message: 08/02/2010, 20h12
  4. Réponses: 4
    Dernier message: 19/03/2007, 17h12
  5. Récupérer la valeur envoyée par la fonction shell
    Par cestimagik dans le forum Général VBA
    Réponses: 3
    Dernier message: 05/01/2007, 19h43

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