|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Bonjour,
J'ai généré un module d'admin avec symfony, mais la je voudrais le modifier un peu pour mieu répondre au besoins : Le module conserne une table de la bd qui possède une clé étrangère. Dans la partie 'edit' de mon module, au lieu de l'ID numérique stoqué dans la table, je voudrais afficher une description dans la table référencée par la clé étrangère. En gros je veux afficher des info d'une autre table dans une liste déroulante. Voici mon schéma de bd pour être plus clair Code :
J'ai réussi a avoir une liste des éditeurs avec comme id le code éditeur : Code :
quelqu'un connaitrait il un autre moyen ? |
||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
Dans ta création de ton produit tu utilise la fonction setEditeurId(). Pour la valeur tu récupére celle de ton select.
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Oui, en temps normal j'aurais fait sa. Mais la c'est un module d'admin généré par propel, les actions et les templates sont dans le dossier cache. Donc a moins de surcharger la methode qui save le produit dans actions.class.php (ce que je ne veux pas faire pour ce petit cas), je n'ai pas d'autre moyen de modifier le comportement du module qu'avec les partials et les generators...
Donc je voudrais créer un partial qui update le champ editeur_id de la table produit. Et ce partial doit être la liste (id, nom) de tous les éditeurs. Pour la liste c'est bon, mais pour updater le champ je rame encore. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
J'ai trouvé !!!
Il suffit d'appeler le select nomdeclasse[nomdechamp], ou nom de classe est le nom de la classe de l'objet à créer ou modifier, et nom de champ et le nom de champ à modifier. Mon select deviens : Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Petit ajout assez bizarre je trouve :
Il faut que le nom du partial soit le même que celui du champ à modifier. Exemple : je veu modifier le champ produit_id, mon partial DOIT se nommer _produit_id.php. Est ce que quelqu'un a entendu parler de ça ? |
|
|
00
|
|
|
#6 | ||||||
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 2 ![]() |
salut
Dans ton cas, pas besoin définir un partial. Le mieux c'est de gérer ça dans le generator.yml. Pour cela, il est très important que ton schema soit bien défini. (tu vas devoir regénérer le modèle à mon avis) moi j'écrirai ça: Code :
Tu vas dans racine_de_ton_projet/lib/model/Editeur.php(pas EditeurPeer.php) et tu ajoutes ceci : Code :
Code :
Il faut biensur enlever ce que t'as mis dans ton templates..et vider le cache (symfony cc en ligne de commande) Un dernier truc, tu peux enlever le deleteOnCascade dans le schema.yml.. si t'as pas besoin d'effacer en cascade. |
||||||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Merci beaucoup !
très propre comme solution, ça me dérangeait un peu de devoir ecrire un partial pour chaque join... Peux tu me dire ou je peux trouver la documentation pour voir les options des fichiers yaml pour la spécification de schéma de BD ? |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2007 Messages : 2 ![]() |
Oui en fait le partial va modifier le comportement de base de l'admin symfony.. Normalement tu peux presque tout faire avec les fichiers de configuration.. Il reste toujours à trouver la méthode..avec symfony rien n'est simple au début. Mais une fois tu commences à maîtriser bien le framework, ça va super vite.
Sinon pour les options diverses des fichiers yml, il y a le chapitre consacré dans le livre de sumfony(tu l'a déjà regarder surement).. Sinon la cheat sheet de l'admin generator est vraiment pas mal foutu, ça synthétise pas mal de choses... à part ça tu peux apprendre énormément dans les snippets sur le site de symfony (c'est des bouts de code expliqués, tu trouve souvent des gens qui ont exposé un prolème que tu rencontres).. tu peux aussi parcourir les snippets par tag, ce qui est très utile(pour regarder tout les snippets en rapport avec l'admin par exemple). En fait, le succès de symfony est entrain de se réaliser en partie grâce à la communauté qui est derrière.. il y a de plus en plus de doc tous les jours. allez bonne chance, |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Oui merci !
J'ai vu sur le livre les possibilité (et limitations) de yml pour la description des bases de données. Mais trouvez vous cela normal que TOUS les type de données MySql ne soient pas disponibles dans les attributs d'un fichier YML... Je pense particulièrement au type ENUM ou BLOB. Est ce volontaire pour assurer l'abstraction (un genre de plus petit dénominateur commun) ? Sinon, comment pourrais je représenter ce type de données ? Merci pour votre aide les gars, j'ai vraiment avancé grace a vous !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com