web-dev-qa-db-fra.com

Passer la variable dans le modèle inclus twig qui a une variable dans le nom du modèle

Est-il possible de passer des variables dans un modèle inclus twig, où le nom du modèle est une variable en soi?

{% include('MyMainBundle:MyEntity:' ~ entity.templateName) %}

fonctionne, mais quand j'essaie de passer également une variable dans ce modèle, twig jette une erreur de syntaxe.

{% include('MyMainBundle:MyEntity:' ~ entity.templateName, {'name' : myName} ) %}
20
RHarrington

Je vois ce que je faisais mal. J'avais combiné deux versions différentes de include, l'une utilisant {{et l'autre utilisant {% en raison de symfony et twig docs montrant différentes façons d'inclure des modèles. C'était aussi simple que de supprimer la parenthèse à partir de mon code initial et en insérant un avec avant de définir l'argument.

Vous pouvez inclure un modèle comme celui-ci par http://symfony.com/doc/current/book/templating.html#including-other-templates

{{ include('AcmeArticleBundle:Article:articleDetails.html.twig', {'article': article}) }}

Ou comme ceci par http://twig.sensiolabs.org/doc/tags/include.html

{% include 'template.html' with {'foo': 'bar'} %}
40
RHarrington

Pour un nom de modèle en tant que variable, j'ai dû utiliser ce format:

{% include 'AcmeCalendarBundle:Default:cal_event_' ~ day.item.type ~ '.html.twig' with {'item': day.item} %}

En utilisant

{{ include 'AcmeCalendarBundle:Default:cal_event_' ~ day.item.type ~ '.html.twig', {'item': day.item} }}

n'a pas marché.

6
pusle