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

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    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 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
    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 habitué
    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
    Points : 154
    Points
    154
    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 expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    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 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
    @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
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    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 :/

  7. #7
    Membre habitué Avatar de Echyzen
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 123
    Points : 178
    Points
    178
    Par défaut
    Salut à tous,

    je suis heurté au même soucis enfin je crois, avec Symfony il est impossible d'utiliser des variables javascript... pour générer la route
    Du coup, je me suis penché sur FOSJsRouting vous en pensez quoi de ce bundle il peut réoudre nos problèmes ou pas du tout?

    Sinon, infine vous avez fait comment vous?

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, 17h53
  2. [AJAX] Un chat avec AJAX
    Par Death83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2006, 16h08
  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, 18h52
  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, 19h29
  5. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 22h04

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