我在HTML文档中有一个部分,一遍又一遍地重复。除了我需要访问的表单输入变量名之外几乎总是相同的。
<div>
{{ form_widget(form.name1.parameter)}}
</div>
<div>
{{ form_widget(form.name2.parameter)}}
</div>
<div>
{{ form_widget(form.name3.parameter)}}
</div>
我想为这三个模板创建一个独特的模板,并将参数传递给此模板,以便将“nameX”参数更改为适当的值。
含义如下:
<div>
{{ form_widget(form.{{goodname}}.parameter)}}
</div>
在调用twig模板中执行以下操作:
{% include "divtemplate.html.twig" with {'goodname' : "name1"} %}
{% include "divtemplate.html.twig" with {'goodname' : "name2"} %}
{% include "divtemplate.html.twig" with {'goodname' : "name3"} %}
我可以在文档中单独使用goodname,但不能嵌入表单变量中。
你知道怎么做吗?我打开了解决方案。
提前多多感谢
编辑:正确的方法(感谢艾哈迈德)
{% set subform = attribute(form, goodname) %}
<div>
{{ form_widget(subform.parameter)}}
</div>
答案 0 :(得分:2)
如何使用常用于访问变量“动态”属性的attribute twig helper。
使用{{ attribute(form, goodname) }}
访问表单name1
,name2
或name3
属性。然后,您可以在返回的对象上调用参数。
答案 1 :(得分:2)
你也可以这样做(类似于我最终做的事情),因为我有超过3个子模式遵循相同的模式。
{% for idx in range(1, 3) %}
<div>
{{ form_widget(attribute(form, 'name' ~ idx ~ '.parameter')) }}
</div>
{% endfor %}