Php 如何使用细枝变量作为表单字段名

Php 如何使用细枝变量作为表单字段名,php,forms,symfony,twig,Php,Forms,Symfony,Twig,我有一个表单模板,其中有几个类似表单字段的重复块。其用途如下: {# form_template.html.twig #} {{ include ('company-select.html.twig', {field: 'companiesInclude'}) {{ include ('company-select.html.twig', {field: 'companiesExclude'}) {{ include ('company-select.html.twig', {field: 'c

我有一个表单模板,其中有几个类似表单字段的重复块。其用途如下:

{# form_template.html.twig #}
{{ include ('company-select.html.twig', {field: 'companiesInclude'})
{{ include ('company-select.html.twig', {field: 'companiesExclude'})
{{ include ('company-select.html.twig', {field: 'companiesLinked'})
{# company-select.html.twig  (simplified, the actual template is much more complex) #}
<div class="form form-field selector" id="{{ field }}">
  {{ form_label(form.field) }}
  {{ form_widget(form.field) }}    

</div>
现在我有一个company select模板,如下所示:

{# form_template.html.twig #}
{{ include ('company-select.html.twig', {field: 'companiesInclude'})
{{ include ('company-select.html.twig', {field: 'companiesExclude'})
{{ include ('company-select.html.twig', {field: 'companiesLinked'})
{# company-select.html.twig  (simplified, the actual template is much more complex) #}
<div class="form form-field selector" id="{{ field }}">
  {{ form_label(form.field) }}
  {{ form_widget(form.field) }}    

</div>
{#company-select.html.twig(简化,实际模板要复杂得多)#
{{form_标签(form.field)}
{{form_小部件(form.field)}
按目前的方式,模板失败,因为“field”不是FormView类的属性


如何使模板将twig变量作为实际字段名插入表单xxx函数调用中?

twig中对象或数组元素的属性可以通过点符号(
)或方括号(
[]
)访问

如果您的属性恰好是一个细枝变量,则需要使用后面的表单

因此,在你的情况下:

  • 表单标签(表单[字段])
  • form\u小部件(form[field])
company-select.html.twig中的代码最终为:

<div class="form form-field selector" id="{{ field }}">
  {{ form_label(form[field]) }}
  {{ form_widget(form[field]) }}  
</div>

{{form_标签(form[field])}
{{form_小部件(form[field])}
在一个非常简化的示例中,这是可测试的

注意,在更复杂的口味中,您还可以使用

[]
:获取变量的属性

来源:

同样值得一读的是:

改变了“companyInclude”的生成方式——现在一切正常。