2012-12-30 1 views
3

Existe-t-il des éléments partiels dans Symfony 2, des modèles réutilisables de n'importe où, de manière efficace?Partials de modèle dans Symfony 2

J'ai trouvé includehttp://twig.sensiolabs.org/doc/tags/include.html mais cela permet seulement le rendu d'un modèle dans une structure de répertoire spécifique.

Qu'est-ce que je veux vraiment un dossier qui contient tous mes modèles partiels, plutôt que de les regrouper dans mes vues principales?

Je veux être capable de faire quelque chose comme

{% include "Bundle:Default:Partials:view.html.twig" %} 

Mise à jour

Je ne veux pas utiliser la structure forcée de la structure Bundle:Controller:Template. Je ne veux pas utiliser cela car cela signifie mettre tous mes partiels de modèles avec mes modèles de vue principale. J'ai besoin de quelque chose qui me permet de faire Bundle:Controller:PartialDir:Template

Répondre

6

Vous pouvez déjà faire cela. Le docs symfony2 a une section décrivant comment faire cela.

http://symfony.com/doc/current/book/templating.html#including-other-templates

+0

Cela pourrait aussi être utile (comme dans la partie 'default ('index') ~ '' _foo.html''): http://twig.sensiolabs.org/doc/recipes.html#making-an-include-dynamic –

+0

@suihock this Ce n'est pas ce que je cherche. Votre solution applique toujours la structure Bundle: Controller: Template. Je ne veux pas utiliser cela car cela signifie mettre tous mes partiels de modèles avec mes modèles de vue principale. J'ai besoin de quelque chose qui me permet de faire Bundle: Controller: PartialDir: Modèle –

+0

@jakenoble Avez-vous essayé Bundle: Contrôleur: Somedir/anotherdir/template.html.twig? – dteoh

2

Dans Symfony 2.4 (la version je l'utilise actuellement, mais cela fonctionne probablement dans d'autres versions 2.x ainsi), vous pouvez effectuer les opérations suivantes:

{% include '::_partials/partial.html.twig' %} 

ou Symfony 2.2+ en utilisant la fonction comprennent

{{ include('::_partials/partial.html.twig') }} 

Cela va chercher le modèle de partial.html.twig à l'intérieur de l'application/Ressources/répertoire vues/_partials. Vous pouvez évidemment nommer le répertoire _partials comme vous le souhaitez. Cela fonctionne également sans le préfixe '::'.

0

Je sais que cela est vieux, mais le moyen d'atteindre ce OP demande est la suivante:
Plutôt que de faire
bundle:controler:partialDir:template
nous devons changer légèrement pour atteindre:
{% include 'Bundle:PartialDir/Controller:Template' %}