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


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Ajax
    Bonjour,

    Depuis peu sous Symfony2, je souhaitai savoir comment utilise t'on la couche Ajax ?

    De mon HTML, je fais appel à une fonction de mon controlleur en ajoutant ces quelques lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($this->container->get('request')->isXmlHttpRequest())
    {
     
    }
    Mais comment on récupère la réponse ?

  2. #2
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Salut,

    Pour utiliser AJAX, le gros du travail est côté javascript. En php c'est juste retourner une réponse en JSON ou XML au lieu de l'habituel HTML, pas grand chose donc.

    Regarde du côté de ce que Jquery t'offre : c'est un framework javascript (au même titre que symfony est un framework php). J'ai trouvé ca qui a l'air bien pour commencer : http://www.devirtuoso.com/2009/07/be...x-with-jquery/

  3. #3
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Salut,

    Je pense que tu voulais comment on récupère la requête ? La réponse c'est toi qui la crée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $request->query->get('page'); // get a $_GET parameter
     
    $request->request->get('page'); // get a $_POST parameter
    http://symfony.com/doc/current/book/...request-object

    .cwx

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Alors que j'essaye de comprendre :

    Avant quand je n'utilisais pas de Framework, pour faire du Ajax j'utilisais jQuery et je faisais appel à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $.post("mapage.php", { var: mavalue récupéré,  },
            function success(data){   
                alert(data);
            });
    Maintenant, si je veux faire du ajax sur un élément "OnBlur" de mon formulaire, je dois faire appel à une route de mon controlleur. Est ce que j'ai bon sur ce point la déjà ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Côté HTML : 
    <input type="text" name="name" onBlur="{{ path('_maroute',{'name':montableau.name}) }}" />
     
    Côté CONTROLLEUR :
    public function UpdateAction($name)
        {
     
            $name = $this->get('request')->request->get('name');
     
            //Ma requete
     
        }
    Ce serait quelque chose comme ca ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    En faite, mon ajax, il fonctionne mais il me recharge ma page puisque je fais appel à une nouvelle route.

    Comment je peux faire appel a la fonction de mon controleur dans mon OnBlur ?

  6. #6
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Ce serait bien de nous mettre le code complet de ton template, routing et controller stp.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Points : 63
    Points
    63
    Par défaut
    J'ai créé un système de mur comme le fameux facebook ou l'on ajoute un statut (post) et on peut ajouter des commentaires aux différents statuts le tout sous symfony2 et Jquery, donc beaucoup de javascript et Ajax, d'ailleurs faudra que je pense à le mettre en version demo sur mon blog.

    Ne cherche pas midi à 14h, y'a rien de compliqué en fait, garde la logique des choses.

    Contrairement à ce qui est écrit plus haut, bien sûr, tu peux renvoyer une réponse HTML si tu le souhaites, par contre, ne pas oublier de créer une vue sur laquelle va pointer le controleur d'action utilisé dans ta requête ajax, j'utilise JQuery.

    Donc tu crées ta route, ton contrôleur et éventuellement ta vue et voila le tour est joué, si tu veux un bout de mon code :

    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
     
    // code de ma vue
    $("#share").click(function(){
     
        $(".loading").show();
        var status=$(".input_box").val();
        if(status == status_text){
            $(".loading").hide();
        }else{
            var DATA = 'status=' + status;
            $.ajax({
                type: "POST",
                url: "post/news",
                data: DATA,
                cache: false,
                success: function(data){
                    $(data).hide().prependTo('.load_status_out').slideDown("slow");
                    $(".loading").hide();
                    $(".input_box").val(status_text).css("color","#808080").css("height",input_box_size);                 
                }
            });
        }
        return false;
    });
    Donc dans ton cas tu peux utiliser .blur() au lieu de .click()

    Comme tu peux le voir la route est ici :
    Tu peux t'assurer la méthode utilisée dans ton routing avec un 'requirements' comme tu peux aussi bien vérifier dans ton controller qu'il s'agit d'une requête de type ajax avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $request = $this->get('request');
     
    if($request->isXmlHttpRequest()) {
            //...
    }

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci à tous.

    Vos réponses m'ont éclairé et mon code fonctionne correctement désormais.

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

Discussions similaires

  1. [Librairies] Api AJAX
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/10/2005, 16h57
  2. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40
  3. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  4. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

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