2017-02-11 1 views
1

Je suis aux prises avec le moteur de template de symfony/sonata ... normalement je suis familier avec l'héritage et la conception orientée objet, mais je ne comprends pas cela.Comprendre le mécanisme de template de sonata/twig

Ma cible est, pour remplacer le DoctrineORMAdminBundle: CRUD: show_orm_one_to_many.html.twig parce que je crois, la liste pour la fonction show dans ma classe admin est rendue là. J'en ai besoin, parce que je veux montrer mes données non seulement dans une liste simple comme la sonate le fait maintenant. Je veux seulement remplacer ceci pour la fonction d'exposition d'un admin explicite dans mon paquet et pas en général!

Selon la documentation sonate, je ne suis en mesure de remplacer le modèle général « SonataAdminBundle: CRUD: base_show.html.twig » en injectant une propre version héritée d'entre eux à mon service

- [ setTemplate, [show, AcmeBundle:TestAdmin:show.html.twig]] 

Le problème est, le gabarit de base inclut/implique de nombreux autres gabarits, parfois accédés par des fonctions objet injectées dans le gabarit par php.

Comment puis-je accéder à/remplacer le

DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig 

de telle sorte que la version de la mine est utilisée à la place des vendeurs un? Ai-je besoin de remplacer tous les modèles de chaînage?

DoctrineORMAdminBundle: CRUD: show_orm_one_to_many.html.twig étend SonataAdminBundle: CRUD: base_show_field.html.twig

Mais je ne sais pas, comment SonataAdminBundle: CRUD: base_show_field.html.twig vient au SonataAdminBundle: CRUD: base_show .html.twig. Je ne peux pas trouver le code approprié.

Merci

Répondre

0

Vous pouvez remplacer les modèles sur un champ de base sur le terrain au lieu de passer outre l'ensemble modèle de spectacle.

$showMapper->add(
    'my_field', 
    null, // let the type guesser do its thing 
    ['template' => 'whatever_you_need.html.twig'] 
); 

Cela fonctionne et vous ne pouvez pas le trouver dans les documents, s'il vous plaît envisager de contribuer un paragraphe à ce sujet.

+0

Je ne sais pas combien de fois j'ai essayé de cette façon et ça ne marche jamais ... maintenant j'ai essayé à nouveau et tout a fonctionné comme par magie! Merci, vous avez sauvé ma journée :) (conclusion: n'abandonnez jamais, essayez encore une fois ... ^^) Mais ai-je raison, que ce n'est pas aussi facile que cela de surcharger chaque modèle utilisé? –

+0

Si vous entendez par là remplacer 'DoctrineORMAdminBundle: CRUD: show_orm_one_to_many.html.twig', je pense que vous pouvez y parvenir avec le remplacement de template standard comme décrit dans les docs sf ... – greg0ire