|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2009 Messages : 109 ![]() |
Salut à tous,
J'aimerais mettre en place un filtre sur les données qui apparaissent à l'utilisateur dans un formulaire. Mon application propose une liste d'entreprise, lorsqu'une d'entre elle est choisie, je sauvegarde son ID et son NOM en session afin de ne proposer que des données filtrées. Le problème vient quand par exemple, on essaye de rajouter un élément a l'entreprise ( Site / Bâtiment ), le formulaire propose la totalité des clé étrangères. Je vous donne un exemple : Je sélectionne l'entreprise A , je peux consulter la liste des Bâtiments et Sites de cette entreprise. Mais quand je veux rajouter un bâtiment, le formulaire me propose de le relier aux sites de toutes les entreprises de la BD. Or j'aimerais qu'il filtre pour n'afficher que les Sites de l'entreprise courante. Je suis allé voir dans les fichier BaseXXForm.class , j'ai l'impression que c'est ici que je dois manœuvrer. Le souci c'est que ces fichiers sont écrasés à chaque build-forms, donc je présume qu'il faut passer par les formulaires normaux ( pas ceux du dossier Base). Si vous pouviez m'indiquer où je dois faire ma modif et comment. Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Baptiste NaudinatDéveloppeur Web Inscription : mai 2011 Messages : 70 ![]() |
Hello !
Alors tout d'abord je te confirme qu'il ne faut pas travailler sur les XXXBaseForm, mais bien sur des classes de formulaires qui héritent de XXXbaseForm (selon le cas, tu peux travailler directement sur lib/form/doctrine/XXXFormDoctrine ou bien carrément crééer un lib/form/doctrine/MonFormPersoForm.class.php qui héritera de ton XXXBaseForm). Je n'arrive pas par contre à voir exactement ce que tu cherches à faire ... tu as un premier formulaire de sélection de l'entreprise, celui là fonctionne, et tu cherches maintenant à créer un nouveau form où l'on peut choisir parmis des batiments/sites relatifs à l'entreprise selectionnée ? Donne nous aussi quelques extraits de ton schema.ym ça nous aidera à voir les relations entre tes objets, et on pourra voir ensemble au passage si c'est bien propre |
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2009 Messages : 109 ![]() |
Salut à toi !
Voici une partie de mon schema.yml Code :
Bon alors pour expliquer correctement : les données proposées dans l'ajout d'un site ou d'un bâtiment sont celles de la BD , mais complète. J'aimerais que le formulaire ne propose que les données relatives à l'entreprise courante. Exemple bien concret : J'ai sélectionné dans l'application une entreprise A , qui possède un service A sur le site A et 3 employés (A, B et C ). En ajoutant un service au site A, le formulaire me propose de renseigner (entre autre): le site ( A donc ) et les employés, sauf qu'il me propose les employés suivant : A , B , C , D , E , F. Or je ne veux voir que les employés déjà présents dans l'entreprise ( D, E, F venant d'une entreprise X ) . Pour résumé je veux filtrer les données proposées par le formulaire en fonction de l'entreprise courante ( et du site , mais on verra après ) qui est enregistrée en session lorsque sélectionnée. J'espère avoir pu éclairci ma demande. Merci du coup de main. |
||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Baptiste NaudinatDéveloppeur Web Inscription : mai 2011 Messages : 70 ![]() |
Hmmm ....
Alors déjà, ton schema a l'air valide (à part une entité Ordinateur qui se balade toute seule, mais bon je suppose qu'elle doit trainer quelque part ^^). Pour ce qui est de ton besoin de lier les employés directement à un service et a une entreprise, je ne sais pas si c'est le plus adapté ... Dans tous les cas, ce que tu cherche a faire est un widget de choix multiples (soit une liste déroulante, soit une liste de checkbox, ou encore une liste de bouttons radios, en terme Symfony c'est pareil). Il te faudra donc, dans ta classe de formulaire, définir (ou surcharger, si il est déjà défini à priori c'est le cas) un widget sfWidgetFormChoice, et lui donner en argument un array qui t'es renvoyé par Doctrine. Pour définir ce widget, tu peux par exemple t'inspirer de ce tuto : le but est de créer une requête Doctrine et de l'appeler dans ton widget. Tout le problème est cependant d'écrire la requête Doctrine qui va bien. Vu ton schema.yml, il doit y avoir moyen de passer par des leftJoin pour obtenir ce que tu souhaites, mais il est peut-être aussi plus simple de créer une relation entre Personnel et Entreprise (sémantiquement ça m'a l'air sensé en tout cas). Bon courage ! |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2009 Messages : 109 ![]() |
Merci bien pour l'info, le tuto est parfaitement ce que je souhaite.
Concernant la requête je l'ai déjà plus ou moins sous le coude. Je pars la dessus et je posterai le code qui marche, même si le tuto a l'air vraiment suffisant c'est toujours ca de plus sur le web. Merci Maerlyn31 |
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Vu le modèle, il n'est pas possible avec les informations actuelles de mettre un lien directe entre personnel et entreprise.
Reste qu'effectivement, il ne serait pas faux, sémantiquement, de mettre un lien entre entreprise et personnel avec un entreprise_id dans personnel. Ce qui permettrais d'avoir un raccourcis dans les requêtes et un côté sémantique plus fiable.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
Copyright © 2000-2012 - www.developpez.com