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 avec ajax


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut Symfony2 avec ajax
    Bonjour tout le monde
    Est ce que quelqu'un peut me dire comment faire pour appeler une action update par exemple en lui envoyant une donnée avec ajax
    Je travaille avec symfony2 , et j'utilise une template php
    Merci d'avance

  2. #2
    Membre Expert 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 : 37
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Salut,

    Ça se fait de la même manière que sans Symfony.
    À la seule différence que tu ne pourras pas utiliser les clé de routing sans les exposer à ton client.

    Partant de là deux chemins s'offrent à toi.

    Tu peux générer l'URL depuis ton contrôleur et passer l'URL générée à ton template. Ensuite tu fais ton javascript à l'intérieur d'une balise script dans la template qui possède une variable avec ton URL (js inline ... pas forcément top comme manière de faire).

    Ou alors tu exposes tes routes de manière à ce que je javascript puisse les utiliser : pour ça, j'utilise le bundle FOSJsRoutingBundle qui fait très bien l'affaire. Il permet d'ajoute une option "expose: true" aux routes que tu souhaites exposer : tu peux alors générer une URL depuis ton JS en utilisant les clé de routine de Symfony.

    À toi de voir ce qui te plait le plus.
    ++

  3. #3
    Membre éprouvé
    Ingénieur d'études et de développement
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur d'études et de développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Salut

    Je ne comprends pas vraiment la réponse de Nico_f, il n'y a pas de problèmes avec l'exposition des urls, et générer l'url dans le contrôleur est inutile.

    Si tu utilises Jquery tu peux faire comme ceci.

    Soit mettre ton code JS, au bas de ton template dans une balise script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {% block javascripts %}
        {{ parent() }}
        <script>
                    $.ajax({
                        type: 'POST',
                        url: '{{ path('ta_super_route', { 'id' : ton_id_récupérer_de_la_manière_qui_te_plait, 'autre_variable' : 'blabla' }) }}',
                        success: function (data) {
                            console.log('super ça marche !! et voici les datas : ' + data);
                        }
                    });
        </script>
    {% endblock %}
    Soit le placer dans un fichier .js.twig et faire un include de ce partial 'un peu plus propre'.
    N'oublie pas le block javascript et la fonction parent.

    Dans les deux cas si tu affiches le code source de ta page, ta route sera réécrite et apparaîtra de la forme 'ta-super-route' car nous utilisons la fonction TWIG 'path'

    Tu n'as plus qu'à faire correspondre une action de contrôleur à cette route et une vue. Le résultat de ta vue sera accessible dans la variable data

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ path('ta_super_route', { 'id' : ton_id_récupérer_de_la_manière_qui_te_plait, 'autre_variable' : 'blabla' }) }}
    Si tu récupère ton id en javascript, il faut effectivement passer par un système d'exposition des routes en JS comme Nico l'a indiqué, ou faire ca avec un flag remplacé dynamqiquement par javascript (plus crado)

  5. #5
    Membre Expert 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 : 37
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    @damiensan, ta solution est une option aussi, mais personnellement j'évite autant que faire se peut les fichier js.twig, pour de nombreuses raisons : certaines plus valables que d'autre.

    - Le js ça n'a rien à faire en dans un fichier HTML, pas plus que le css, donc les block javascripts qui font office de js inline et ou on ajoute un petit morceau vite fait, je suis pas trop fan : le js ça va dans un fichier js.
    - Le js, c'est déjà assez pénible comme ça alors si mon IDE/Editeur de texte ne reconnait pas les fichiers *.js.twig et ne me met pas la coloration ça devient encore plus pénible
    - Les js.twig ne sont pas compressés par assetic
    - En cas de success de ta méthode ajax, admettons que tu veuille afficher un bloc ou un quelconque élément en HTML. Cette partie se fera dans le fichier js.twig alors que l'appel ajax se fera ailleurs. Quand je regarde la déclaration d'une méthode ajax, j'aime bien voir ce qu'elle fait sans devoir avoir à chercher la moitié ailleurs.
    - Exposer tes routes explicitement dans la configuration du routing est bien pratique si pour x ou y raison tu as besoin de faire un tour des actions appelées en ajax.

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut
    les amis j'ai trouvé des solutions pour une template twig mais moi je me suis familiarisée avec php template du coup je demande une solution pour ce type de template :/

Discussions similaires

  1. [AJAX] PHP avec ajax(makerequest)
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/04/2006, 16h53
  2. [AJAX] Un chat avec AJAX
    Par Death83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2006, 15h08
  3. [AJAX] Ajax en mode synchrone sur Safari
    Par The Blec dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 17h52
  4. [AJAX] Appel de plusieurs pages avec Ajax
    Par shadowbob dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 13/02/2006, 18h29
  5. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04

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