如何在symfony 2中在同一模板中呈现具有不同主题的表单

如何在symfony 2中在同一模板中呈现具有不同主题的表单,symfony,twig,symfony-forms,Symfony,Twig,Symfony Forms,我想在Symfony中自定义表单渲染。我检查了,发现可以使用{{form_theme}}标记设置渲染主题。如果在同一时间只存在一个表单,则此方法非常有效,但如果在同一模板中有多个表单,则此方法不起作用 myindex.html.twig {% extends 'base.html.twig' %} {% block body %} <h1>Hello Form 1</h1> {% form_theme form1 'bootstrap_3_layout.html.twi

我想在Symfony中自定义表单渲染。我检查了,发现可以使用
{{form_theme}}
标记设置渲染主题。如果在同一时间只存在一个表单,则此方法非常有效,但如果在同一模板中有多个表单,则此方法不起作用

myindex.html.twig

{% extends 'base.html.twig' %}
{% block body %}

<h1>Hello Form 1</h1>
{% form_theme form1 'bootstrap_3_layout.html.twig'  %}

{{  form_start( form1 ) }}
{{  form_end( form1 ) }}

<h1>Hello Form 2</h1>
{% form_theme form2 'bootstrap_3_horizontal_layout.html.twig'  %}

{{  form_start( form2 ) }}
{{  form_end( form2 ) }}

{% endblock %}
{%extends'base.html.twig%}
{%block body%}
你好,表格一
{%form_主题form1'bootstrap_3_layout.html.twig%}
{{form_start(form1)}}
{{form_end(form1)}}
你好,表格二
{%form_主题form2'bootstrap_3_horizontal_layout.html.twig%}
{{form_start(form2)}}
{{form_end(form2)}}
{%endblock%}
如您所见,有两个表单变量,我希望
form1
使用
'bootstrap\u layout.html.twig'
form2
使用
'bootstrap\u horizontal\u layout.html.twig'
呈现。我不知道细枝的内部结构,但我认为主题覆盖了它们的块定义

结果是这样的

因此,我的问题是,我如何能够在不相互干扰的情况下呈现具有给定主题的形式。有没有办法在单独的干净细枝过程中渲染窗体

我尝试了一个带有自定义函数的Twig扩展,但该函数似乎使用了相同的Twig_环境。我还尝试了一个带有{%render}%的子请求,但这也不起作用。

Twig solution 如果只想对表单使用
水平
类,可以将其添加到
表单\u start()


默认形式
电子邮件地址
密码
表格一
电子邮件地址
密码
表格二
电子邮件地址
密码

您的代码在我的测试中运行良好。


您可能正在发送导致问题的form1和form2的相同表单类型。如果您发送两种不同的表单类型,它应该可以工作

你已经尝试过这个方法了吗?这和我在上面代码中做的不一样吗??
{% extends 'base.html.twig' %}
{% block body %}

<h1>Hello Form 1</h1>
{% form_theme form1 'bootstrap_3_layout.html.twig'  %}

{{ form_start( form1 ) }}
{{ form_end( form1 ) }}

<h1>Hello Form 2</h1>
{% form_theme form2 'bootstrap_3_horizontal_layout.html.twig'  %}

{{ form_start(form2, {'class': 'horizontal', 'attr': {'class': 'horizontal'}}) }}
{{ form_end( form2 ) }}

{% endblock %}