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 - Ajax - Symfony [2.x]


Sujet :

Symfony PHP

  1. #1
    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 Form - Ajax - Symfony
    Bonjour les amis ,
    je débute avec ajax , j'espere retrouver mon bonheur avec vous .
    J 'essaie d'ajouter des donnés (menus) sans refraichir la page , l'ajout ce fait , l'affichage aussi .
    Mais le code m'affiche , lorsque je clique submit , une deuxieme form (deux a la fois )
    je sais pas d"ou viens
    Merci d 'avance .


    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
     
     
     
       public function newFormAjaxAction() {
            $request= $this->getRequest();
            $newform = $this->get('form.factory') ->create(new menuType(), new Menu());
     
              $x="a"; 
            if ($request->isXmlHttpRequest()) {
                $newform->handleRequest($request);
                if ($newform->isValid()){
                $menu = $newform->getData();
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($menu);
                    $em->flush();
     
     
     
                  $x = $em->getRepository('MyAppEspritBundle:menu')->findAll();
               return $this->render('MyAppEspritBundle:Default:ajaxbouton.html.twig', array('form' => $newform->createView(),'menu'   => $x));
     
                //return new JsonResponse(array('response'=>TRUE));
                }
                else{
                return $this->render('MyAppEspritBundle:Default:ajaxbouton.html.twig', array('form' => $newform->createView(),'menu'   => $x));
     
           //      return new JsonResponse(array('response'=>false));  
                }
            }
            return $this->render('MyAppEspritBundle:Default:ajaxbouton.html.twig', array('form' => $newform->createView()      ,'menu'   => $x));
     
        }

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    {# empty Twig template #}
     
     
    <script src="{{ asset('bundles/myappesprit/js/jqueryajax.min.js') }}" type="text/javascript"></script>
     
     
    <form id="form_ajouter" action="{{ path('rn_phototekbundle_ajax') }}" method="post">
        {{ form_widget(form) }} 
     
     
     
        <input type="submit" value="{{ 'ajouter' | trans }}" />
    </form>
     
    <div class="loading"></div>
    <div id="resultats_ajouter"> 
        {% include 'MyAppEspritBundle:Default:liste.html.twig' with {'menu' : menu}  %}
    </div>
     
     
     
    <script type="text/javascript">
    $(function() {
     
        $("#form_ajouter").submit(function(){ 
       //     var form = $(this).serialize();
            $.ajax({
                type: 'post',
                url: "{{path('rn_phototekbundle_ajax')}}",
         //       data: {form},
                  data: $(this).serialize(),
                success: function(data)
                {           
                 /*if (data['response']===true){
                     console.log(data);
                     $('#'+id).remove();
                 }*/              
                   $('#resultats_ajouter').html(data);
                   $(".loading").hide();
                }
            });
                return false;
        });
    });
    </script>
    Vue liste.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table>
    {% for a in menu %}
        <tr>
            <td>{{ a.id }}</td>
            <td>{{ a.position }}</td>
            <td>{{ a.name }}</td>
            <td>{{ a.lien }}</td>
        </tr>
    {% endfor %}
    </table>

  2. #2
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    form_widget(form) fait déjà le rendu du formulaire en incluant la balise form. Tu n'as pas besoin d'en réécrire une en html si tu utilises cette fonction twig.

  3. #3
    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
    merci c'est résolu ,
    enfaite j'ai reformuler mon js en ajoutant et dans le controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        return $this->container->get('templating')->renderResponse('MyAppEspritBundle:Default:liste.html.twig', array(
                                'menu' => $x
                    ));

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

Discussions similaires

  1. [AJAX] form ajax jquery
    Par nowayy dans le forum AJAX
    Réponses: 6
    Dernier message: 20/07/2011, 12h28
  2. [1.x] imbriquer dynamiquement des forms sur symfony
    Par wind_of_o dans le forum Symfony
    Réponses: 5
    Dernier message: 22/03/2011, 15h19
  3. form+ajax+retenir mot de passe ?
    Par icareo dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 21/03/2010, 05h38
  4. [Prototype] La meilleure Class de controle form AJAX/JS
    Par hugo69 dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 18/05/2009, 08h10
  5. [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

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