Twig从字符串动态创建变量

时间:2016-06-23 15:55:42

标签: templates dynamic twig symfony

我正在使用symfony 3 + twig作为模板引擎。

我需要根据字符串创建变量,例如我想要

{% set varName='Document' %}

然后像

{% for createVariable(varName) in entities %}

为什么会这样?

因为我有一个包含另一个模板B的模板A. 在模板AI集{% fileToInclude='...' %}中,模板BI包括fileToInclude需要特定变量才能工作,但fileToInclude可以是另一个需要另一个特定变量的模板,所以我需要创建一个变量从我设置的字符串开始,如果我包含例如“document.html.twig”,那么我将设置varName ='Document',如果我包含'news.html.twig',我将设置varName ='新闻......

怎么做?

编辑:

文件A:

{% set includeFile='filec.html.twig %} //HERE I can set filed or filee 
{% set varName='document' %}

{% include 'fileb.html.twig' %} 

文件B:

{% for entity in entities %} // HERE entity should be named document or news or what I need 

{% include includeFile %}

{% endfor %}

文件C:

{{ document.title }}

文件D:

{{ news.text }}

2 个答案:

答案 0 :(得分:0)

不是很清楚你想做什么,但你做不了类似的事情:

{ include('document.html.twig', {varName: 'Document'}) }}

或更通用:

{ include(data.template, {varName: data.entity}) }}

答案 1 :(得分:0)

你想做的事很奇怪。 但是如果你想使用动态变量名,请使用:

attribute(_context, varName) {# <- is your variable #}