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 :

Synchroniser une page sur une combobox


Sujet :

Symfony PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut Synchroniser une page sur une combobox
    Bonjour,

    J'ai une simple page qui affiche les paramètres d'un client.
    Une liste déroulante qui affiche la liste des clients.

    Comment faire pour que la page se synchronise sur le choix de la liste.

    Autrement dit: comment générer la route en lui passant en paramètre l'id du client sélectionné?

    Merci d'avance,
    Philippe

  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
    Hello,

    Ma suggestion : un peu de jQuery : tu bind l'évènement "change" de ta selectbox, tu récupères la valeur de celle-ci, tu appelles l'URL de ton choix avec en paramètre cette valeur et le tour est joué.

    Mieux encore, tu appelles une action qui te renvoie uniquement le rendu de ta liste, que tu affiches à la place de la liste actuelle, et plus besoin de rafraîchir la page.

    Pour binder le changement de ta select box
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#selectboxId').on('change', function(){...})
    La documentation pour binder un évènement en jQuery => http://api.jquery.com/on/

    ++

  3. #3
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Bonjour,

    merci pour ta réponse.

    Oui, avec jQuery, je doit pouvoir récupérer les data avec un $.get, et rafraichir ma page.

    Mais dans ce cas, ce n'est plus vraiment un fonctionnement sur le modèle MVC,puisque les requêtes ne passent plus par le contrôleur.

    Rem: j'ai fait chauffer mon ami google, mais je n'ai rien trouvé sur la synchro d'une page sur une combobox, en Symfony. Surprenant!

    Philippe

  4. #4
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    Bonjour,

    Je ne vois pas en quoi ça interfère avec le modèle MVC. Lors d'un changement dans ta liste tu bind l’évènement en jquery et tu déclenche un appel ajax a un de tes contrôleur qui va mettre à jour le contenu de ta page en fonction du choix de la liste déroulante.

    De toute façon je ne crois pas qu'il y ait d'autre façon de faire.

  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
    Pour appuyer la réponse précédente, lorsque tu fais un appel sur une URL que ce soit en AJAX ou non, tu passeras par ton contrôleur dès lors que la route est définie pour correspondre avec une action de celui-ci.

    C'est comme si tu tapais directement l'URL, le système de routage va reconnaitre le pattern de ta route et va donc appeler ton contrôleur. Si ça ne correspond à aucune route définie, tu auras le droit à une belle erreur 404.

    Pour être le plus propre possible je te suggère d'éviter d'écrire ta route en dur dans le javascript mais de générer la route au préalable à l'aide du générateur d'URL symfony (soit dans le contrôleur, soit à l'aide de twig). Ainsi, si l'URL de ta route change mais que tu gardes le même identifiant pour cette route, ton appel AJAX fonctionnera toujours, alors que si tu l'écris en dur tu risques d'oublier de mettre à jour l'URL dans ton JS.

    En stockant l'URL générée dans un attribut "data-url" par exemple, tu peux la récupérer depuis ton javascript la concaténer avec la valeur de ta selectbox (que tu récupère en faisant un $(this).val() depuis l'intérieur de ton bind.

    Si en revanche tu exécutes du js inline (ton javascript se trouve dans la template et non dans un fichier à part) tu peux directement générer l'URL sans être obligé de la stocker ou que ce soit puisque tu peux générer du twig à l'intérieur de ta balise script.

    Il n'y a rien de surprenant à ce que tu n'aies pas trouvé de solution out of the box pour ton cas et symfony. Il s'agit d'une action qui doit se faire coté client donc c'est plutôt vers des solutions javascript qu'il faut chercher.

    ++

  6. #6
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Merci pour ce complément détaillé de réponse.
    Je vais programmer ça en jQuery.
    L'idée de stocker la route, générée par symfony, dans un attribut, me plait bien.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Faire apparaitre une page sur une page existante (pas de popup)
    Par johnson95 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/01/2010, 14h44
  3. insérer une image sur une page html sans joindre son fichier
    Par fidji dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 03/02/2006, 10h15
  4. Garder la hauteur d'une iframe sur une page
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2005, 11h35
  5. accéder à une frame sur une page mère
    Par lyne dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/02/2005, 07h02

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