|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Bonjour,
J'aimerais alimenter un menu déroulant en fonction de la valeur d'un champ précédemment saisi. Sachant que le framework permet d'implémenter les champs du formulaire avec une classe php associée par exemple "AnnonceForm.php". Je ne sais pas comment faire pour intégrer AJAX et appeler ces différents champs qui sont appelés dans la classe du formulaire. Par exemple : -> Une liste déroulante qui contient la liste des régions. -> Une autre qui contient la liste des départements. En fonction de la région choisit, la deuxième liste générera les départements associés. Sachant que j'ai déjà 2 tables renseignées dans ma base comportant la liste des régions et de départements. Merci de m'expliquer la procédure ,sinon me proposez un tutoriel qui permet de faire cette manipulation avec Symfony bien sur. Merci d'avance pour vos précieux conseils. |
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Tu demandes beaucoup... faudra te mouiller un peu sur le coup.
Il n'y a pas d'objet symfony qui permettent de réaliser cette double cascade sans avoir à ouvrir le moteur. Le mieux est de faire un formulaire qui tourne dans un premier temps sans JS. Histoire que ceux qui n'ont pas de JS activé arrivent à gérer ton application. Ensuite, d'écrire du code (avec jquery probablement comme framework JS) pour faire les demandes de modification de la liste à symfony. Après, c'est à toi de voir si tu veux que symfony génère la liste avec tous le code HTML et le remplacer dans la page, ou juste te retourne les départements pour la région sous forme JSON et ton code JS fait le remplacement. Il (ton code) peut aussi masquer les boutons nécessaire à la page sans JS. Symfony va te simplifier la vie dans le traitement des requêtes JS. Et dans les possibilités de factorisation du code. Tu as des exemples dans la documentation de symfony sur le site de sensio, en français (les exemples, pas le site). Il ne sont pas exactement ce que tu demandes, mais donnent de bonnes bases.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Salut,
Merci pour ta réponse mais en fait je que je cherche c'est "pour faire les demandes de modification de la liste à symfony" c'est ça en fait car les déclarations sont bien faites dans les classes de formulaires comment je ferai appel à ces derniers dans le JS ? |
|
|
00
|
|
|
#4 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Je ne vois pas trop comment expliquer cela en une réponse.
As-tu déjà fais de l'ajax, du JS ? As-tu déjà utilisé jquery ? Il faut lier du code jquery au changement de la valeur de la première liste. Ensuite récupérer les données en affichant un symbole pour prévenir l'utilisateur que l'ordi travail pour lui. Puis mettre en forme et afficher. Et côté symfony, il faut une action qui va récupérer les données (le code pour récupérer la liste peut être partagé) et les renvoyer. Après, si tu n'as jamais fait de JS ni de discutions entre la couche JS et une application PHP, il faudrait, peut-être, commencer à ce pencher sur les tutoriels correspondants. Vu que je n'ai aucune idée de ton niveau, je ne sais pas trop quoi dire d'autre.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Oui en fait je travaille je suis débutant j'ai jamais fait d'AJAX c'est pour ça.
Merci en tout cas.Je vais continuer mes recherches. |
|
|
00
|
|
|
#6 | ||||||||
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Bonjour,
J'ai essayé d'intégrer AJAX en procédant comme suit : J'ai rajouté la route suivante : Code :
Code :
Code :
Code :
Les valeurs des deux listes déroulantes n'ont pas changé. Merci de me corriger ou m'éclairer un peu. |
||||||||
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Développeur Web Inscription : septembre 2008 Messages : 253 ![]() |
je dis ça je dis rien mais je pense que ton javascript n'est jamais appelé car :Tu es sur de cet identifiant, ce n'est pas écrit dans ta vue !
Essaie de mettre un alert() javascript sur cette fonction change pour voir. Sinon, à part ça, je ne vois pas l'intéret de faire une requête asynchrone pour ça... A ta place je chargerais toutes les régions et tous les département par défaut dans tes deux listes. Puis sur ta fonction change, tu met à jour la liste des département en javascript, seulement en les cachant (display: hidden). Bien plus rapide et ça évite des requêtes inutiles. Tu peux toujours vérifier dans ton contrôleur après si la région et le département sélectionné correspondent au cas ou la personne fait des modifications dans le code HTML. |
|
|
00
|
|
|
#8 | ||||
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Salut, merci pour ta réponse.
En fait j'avais tester l'alerte ça marche donc le javascript est bien exécuté. Et les listes déroulantes sont bien chargées avec toutes les données au départ et la liste de département ne change pas malgré un changement sur la région. Je comprend pas comment tu veux que je fasse un hidden sur les départements car normalement le javascript doit affiné automatiquement la liste de départements à chaque changement de région. Code :
ou Sachant que je fais appel à ce dernier depuis le template newSuccess.php : Code :
Merci de m'aider à trouver la bonne syntaxe. |
||||
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Développeur Web Inscription : septembre 2008 Messages : 253 ![]() |
Déjà, je suppose que tu utilise JQuery vu cette syntaxe ?
Code :
<?php include_partial('form', array('form' => $form)) ?> Edite donc ce fichier _form.php, il se trouve dans le même dossier que newSuccess.php que tu montre. Si tu laisse le "echo $form" par défaut, tu ne contrôle pas grand chose à l'affichage et pour mettre des identifiants, je te laisse regarder la doc sur les forms pour plus d'indications. Sinon utilise tout simplement Firebug ou bien affiche la source de ta page pour trouver l'identifiant de ta liste déroulante. |
|
|
00
|
|
|
#10 | ||
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Merci pour ta réponse. Mais si tu regarde bien j'avais poster sur la réponse d'avant mon fichier _form :
Code :
Merci |
||
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : novembre 2010 Messages : 36 ![]() |
Merci beaucoup maintenant ça marche décidément fallait juste récupérer le bon ID.
|
|
|
00
|
|
|
#12 | ||||||||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 1 ![]() |
Bonjour,
j'ai fait la mem chose que toi et j'ai pas de résultat (la 2ieme liste déroulante ne se change pas en fonction de la premiere: voici mon script jquery appelé: Code :
Code :
et voici la fonction executeAjax du module voiture: Code :
Code :
|
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com