|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 311 ![]() |
Bonjour,
j'ai généré le backend de mon appli, et j'ai ajouté une action personnalisée "activer". Je voudrais appliquer cette action selon la valeur d'un champs, càd uniquement lorsque le champs "etat=inactif", comment je pourrais spécifier ça au niveau du generator.yml? Code yaml :
Merci pour votre aide!! |
||
|
|
00
|
|
|
#2 | ||||
|
Membre habitué
![]() Baptiste NaudinatDéveloppeur Web Inscription : mai 2011 Messages : 70 ![]() |
Salut Flora806 !
Je ne pense pas que ce genre de configuration fine puisse se faire directement par le fichier generator.yml. Par contre, tu peux coder ce genre de comportement en surchargeant un template de ton module : D'abord, visualise quelques pages de ton module pour charger le cache Ensuite, va dans cache/backend/dev (ou prod c'est pareil)/modules/TON_MODULE/autoMODELE/ Le template qui t'interesse va être je pense "_list_td_actions.php" Copie le, et colle le dans le répertoire template de ton module "réel" (dans apps/backend/...) Tu dois ensuite y trouver une ligne du genre : Code :
Code :
See ya ! |
||||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 311 ![]() |
Merci Maerlyn31 pour ta réponse,
j'ai essayé d'appliquer ton code, mais j'ai une erreur par rapport au template: Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
On va être d'accord sur le fait que l'on est un peu "hors norme".
Le défaut de la méthode proposée par Maerlyn31 est de modifier un élément auto généré. Il faudra refaire ceci à chaque modification du generator.yml. Ce qui me semble un peu lourd. Tu as des partial, vide, qui peuvent être modifié pour ce type d'élément. L'avantage est que tu ne vas pas modifier la partie générée. L’inconvénient est que ton action ne sera pas dans la même partie du form. Regarde du côté des partial footer du module.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Ludovic Étudiant Inscription : janvier 2011 Messages : 124 ![]() |
Ton template doit avoir le même que celui des actions soit _list_td_actions.php et il le remplacera.
|
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 311 ![]() |
j'avoue que je comprends pas trop le fonctionnement des partials et des partials footer en backend..Michel si t'as des liens là-dessus, j'en serai reconnaissante
Sinon, si j'utilise l'include_partial et le template (contenant ce qui m'intéresse de _list_td_actions.php) , est-ce que quelque part dans le controleur du module backend, je dois ajouter une action qui doit me renvoyer les $articles..pour pouvoir les récupérer dans le template? |
|
|
00
|
|
|
#7 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Un partiel peut, dans le cadre des templates, être comparé à une fonction dans le cadre de la programmation.
Il est appelé avec des paramètres (en général les date ou le form) et permet soit de factoriser le code, soit de le découper en plusieurs petites unités fonctionnel, ce qui est le cas dans les module auto-générés. Regarde dans ton cache, dev ou prod, modules, autoQuelquechose tu y trouveras un dosser template et tous les templates et partiel générés pour ce module (il faut avoir exécuter au moins une fois le module depuis le dernier cc...). Accessoirement, tu trouveras dans le dossier action le code de l'action, intéressant à consulter aussi. A partir de là, dans le dossier apps/<monApplication>/modules/<MonModuleAutoGenere>/... tu peux mettre soit des partiels (templates/...) soit le fichier action et modifier le déroullement de l'auto généré. Pour l'action.class.php il n'y a pas de difficultés majeur si tu fait appel aux parents (d'ailleur le fichier est déjà présent). Pour les templates et les partiels il n'y a pas de notion d'héritage. Si tu mets un fichiers du caches dans le dossier template de ton modules dans apps, il remplace définitivement celui qui est auto-généré à chaque modification du generator.yml. Mais certains sont volontairement vides : form_footer, form_header, list_footer et list_header font partie de ces partials vides. Pourquoi générer des fichiers vides et y faire appel à chaque génération de l'écran ? Pour te permettre de mettre des modifications permanentes dans l'écran généré sans risquer d'écraser la partie auto-généré. Est-ce plus claire ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 311 ![]() |
Merci pour toutes ces explications!!
j'ai vérifié dans le cache, il y a bien tous les templates autogénérés.. je comprend mieux mnt le fonctionnement, mais j'arrive toujours pas à résoudre le problème de récupération de l'objet $article dans le template. si c'est compliqué à faire, je ne sais pas s'il existe un autre moyen que celui là pour appliquer une action selon la valeur d'un champs.. |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Baptiste NaudinatDéveloppeur Web Inscription : mai 2011 Messages : 70 ![]() |
@flora806 :
Ton admin generator parle d'une gestion d'article, j'ai donc supposé que ton objet s'appelait "Article", d'où la variable $article. Tu dois remplacer ce nom de variable par celui de ton code. Pour ce qui est du getEtat(), c'est aussi un exemple. Tu dois écrire la méthode get() qui correspond à la récupération du statut. Par exemple, si ton objet s'appelle "News" et que d'un point de vue base de donnée son état est un booléen stocké dans la colonne "actif", il faudra écrire $news->getActif() @Michel : J'ignorais l'existence des partials vides, mais je vois bien l'interêt de ne pas surcharger les templates qui sont re-générés à chaque modification du generator.yml. Je viens de jeter un coup d'oeil dans le cache d'un projet, et je n'arrive par contre pas à localiser le template qui correspondrait à une surcharge "propre" de _list_td_actions. Dans le partial _list, qui génère la structure du tableau, les partials _list_footer et _list_header ne sont appelés nulle part As-tu quelques précisisons sur ces surcharges non bloquantes ? |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 311 ![]() |
Merci pour ta réponse,
oui j'ai bien compris le principe d'appel de l'objet, dans mon cas mon objet s'appelle "article" dans la base de données, et je fais: pourquoi je dois écrire la méthode getEtat()? normalement ça se fait automatiquement dans symfony. Etat ça représente bien un attribut de la classe "article". Par ailleurs, j'ai une autre question, est-ce que dans symfony, on peut générer deux modules admin à partir de la même table? |
|
|
00
|
|
|
#11 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Il n'y a pas de limite au nombre de modules (auto-généré ou non) qui peuvent être généré et/ou créé à partir d'un objet du modèle (table en général).
Il y a 4 partial "vide" : form_footer, form_header, list_footer et list_header. Il n'y a pas de partial pour le détail d'un enregistrement. Les partials list_footer et list_header sont appelés depuis le templade indexSuccess.
__________________
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