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 :

ajax call , plusieurs renderResponse [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre émérite
    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
    Par défaut ajax call , plusieurs renderResponse
    Bonjour,
    J'ai un projet E-Commerce (panier , produit ..) . J'ai développé tout ce qui est panier de session etc ..
    Mon problème :
    lorsque je veux annuler une commande , le panier de session affiché en haut de la page change ( ajax ) et d'autre div a gauche DOIT changer de la même façon .sachant que le panier en haut appartient au layout de la Template mais l'autre div à modifier appartient a une page cart.html.twig heritant du layout .
    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
    15
     
      $panierSession = $this->get('request_stack')->getCurrentRequest()->getSession()->get('panierSession');
            $session = $this->get('request_stack')->getCurrentRequest()->getSession();
            $id = intval($id);
            if ($request->isXmlHttpRequest()) {
                $panierSession->delmoreitem($id);
                $session->set('panierSession', $panierSession);
                $cart_subtotal = 0;
                foreach ($panierSession->viewcart() as $id => $qty) {
                    $cart_subtotal = $cart_subtotal + ($this->get('entities')->PriceByProduit($id) * $qty); // float total cart //
                }
                $session->set('carttotal', $cart_subtotal);
                  return $this->container->get('templating')->renderResponse('MyAppFrontofficeBundle:client/cart:cartajax.html.twig' , array(
                                  'carttotal' => $cart_subtotal, 'panier' => $panierSession->viewcart()
                          ));
    Mon problème en bref : j'ai pu rafraîchir une div mais je veux faire ça pour deux div éloignés

    Merci d'avance .

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Pourquoi ne pas séparé les deux mise à jours dans deux appel Ajax différent ?
    Logiquement, tu fait 3 appels :
    1. Qui modifie la commande (annulation pour le coup)
    2. Mise à jour de ta premier zone
    3. Mise à jour de ta seconde zone

    Que chaque appel gère sa propre zone correctement et retour simplement la zone à mettre à jour / remplacer.

    Après, il est possible que je n'ai pas saisi la problématique posé...

    Cordialement,
    Patrick Kolodziejcyzk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre émérite
    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
    Par défaut
    Merci Patrick ,
    j'ai essayé de lancer deux actions après suite à un seul bouton :
    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
     
       <a id="{{ allproduit.id }}" class="{{ allproduit.id }}"></a> //// c'est mon bouton
     
        <script type="text/javascript">
            $(function () {
                $("#{{allproduit.id}}").click(function (e) {
                    $.ajax({
                        type: 'post',
                        url: "{{path('my_app_frontoffice_supprimerdepanier',{id:allproduit.id} ) }}",
                        data: $(this).serialize(),
                        datatype: "json",
                        cache: false,
                        success: function (data) {
                            $('div#{{allproduit.id}}').hide();                                            
                            $('a#classdropdown-toggle').html(data);
                       //     $('div.widget cart-summary').html(data);
                        }
                    });
                    return false;
                });
            });
        </script>
        <script type="text/javascript">
            $(function () {
                $(".{{allproduit.id}}").click(function (e) {
                    $.ajax({
                        type: 'post',
                        url: "{{path('my_app_frontoffice_supprimershoppingcart',{id:allproduit.id} ) }}",
                        data: $(this).serialize(),
                        datatype: "json",
                        cache: false,
                        success: function (data) {
                         // ] $('div#{#{allproduit.id}#}').hide();                                            
                            $('div.body').html(data);
                        }
                    });
                    return false;
                });
            });
        </script>
    Seule la première action qui se lance et donc une seule div qui se rafraîchie

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Pas un expert en JavaScript, mais là tu redéfinit l'action sur le onclick... Donc seul le dernier se joue logiquement.

    Essai un truc dan ce style:
    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
      <a id="{{ allproduit.id }}" class="{{ allproduit.id }}"></a> //// c'est mon bouton
     
        <script type="text/javascript">
            $(function () {
                $("#{{allproduit.id}}").click(function (e) {
                    $.ajax({
                        type: 'post',
                        url: "{{path('my_app_frontoffice_supprimerdepanier',{id:allproduit.id} ) }}",
                        data: $(this).serialize(),
                        datatype: "json",
                        cache: false,
                        success: function (data) {
                            $('div#{{allproduit.id}}').hide();                                            
                            $('a#classdropdown-toggle').html(data);
                       //     $('div.widget cart-summary').html(data);
                        }
                    });
                    $.ajax({
                        type: 'post',
                        url: "{{path('my_app_frontoffice_supprimershoppingcart',{id:allproduit.id} ) }}",
                        data: $(this).serialize(),
                        datatype: "json",
                        cache: false,
                        success: function (data) {
                         // ] $('div#{#{allproduit.id}#}').hide();                                            
                            $('div.body').html(data);
                        }
                    });
                    return false;
                });
            });
        </script>
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre émérite
    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
    Par défaut
    Merci kolodz , j'i constaté que j'ai trés peu reflechi avant de test avec mon script precedant .
    J'ai compris ce que tu propose et ça marche à merveille
    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
     
       <script type="text/javascript">
                                            $(function () {
                                                $("#close-btn{{allproduit.id}}").click(function (e) {
       /******************************** **********************************************************************************/
                                                    $.ajax({
                                                        type: 'post',
                                                        url: "{{path('my_app_frontoffice_supprimerdepanier',{id:allproduit.id} ) }}",
                                                        data: $(this).serialize(),
                                                        datatype: "json",
                                                        cache: false,
                                                        success: function (data) {
                                                            $('div#{{allproduit.id}}').hide();
                                                            //  $('div#NOTajax').hide();
                                                            $('a#classdropdown-toggle').html(data);
                                                          //    $('div.widget cart-summary').html(data);
                                                             }
                                                            });
                                                   //          return false;
        /******************************** ***************************************************************************/
                                                    $.ajax({
                                                        type: 'post',
                                                        url: "{{path('my_app_frontoffice_supprimerdeshoppingcart',{id:allproduit.id} ) }}",
                                                        data: $(this).serialize(),
                                                        datatype: "json",
                                                        cache: false,
                                                        success: function (data) {
                                                            $('div#{{allproduit.id}}').hide();
                                                            //  $('div#NOTajax').hide();
                                                         //   $('a#classdropdown-toggle').html(data);
                                                            $('div.body').html(data);
                                                             }
                                                            });
                                                      //       return false;                                                        
         /********************************** ***********************************************************************************/
                                                }
                                                );
                                            });
                                        </script>

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

Discussions similaires

  1. [script.aculo.us] [Prototype] Ajax.Autocompleter (plusieurs paramètres)
    Par seb92 dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 19/09/2007, 17h40
  2. [AJAX] Renvoi d'ajax dans plusieurs div
    Par fixbraun dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2007, 13h48
  3. [AJAX] Inscription en AJAX ( envoyer plusieurs valeurs)
    Par Hujii dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/05/2007, 02h38
  4. [AJAX] Ajax et plusieurs radios générés par MySQL
    Par Ryu007 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/03/2007, 18h57
  5. [AJAX] Plusieurs sources
    Par shadowbob dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/08/2006, 15h35

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