如果我在一个树枝页面中有两个表单,并且想要渲染不同的表单主题,则它不起作用。我的两个表单都有第一个呈现的主题。例如:
在config.yml中:
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
globals:
register_form_theme: 'MpShopBundle:Form/Themes:register_theme.html.twig'
register_form_popup_theme: 'MpShopBundle:Form/Themes:register_popup_theme.html.twig'
在我的树枝上,我喜欢这样:
<form>
{% form_theme form register_form_theme %}
...
</form>
<form>
{% form_theme form register_form_popup_theme %}
...
</form>
问题是两个表单都是用第一个主题呈现的......为什么会这样?有什么方法可以做到这一点吗?
答案 0 :(得分:2)
迟到总比没有好,因为此问题在StackOverflow中排名很高:在Symfony2(及更高版本)中,您可以在Twig模板中设置多种表单主题。语法为(请注意with
关键字):
{% form_theme form with ['MpShopBundle:Form/Themes:register_theme.html.twig', 'MpShopBundle:Form/Themes:register_popup_theme.html.twig'] %}
它在Symfony issues上进行了讨论,但我认为它从未得到正确记录。
关于原始问题,我认为解决方案是针对2个不同的表单视图变量(register_form
和register_popup_form
)使用2个不同的表单主题。
{% form_theme register_form 'MpShopBundle:Form/Themes:register_theme.html.twig %}
{% form_theme register_popup_form 'MpShopBundle:Form/Themes:register_popup_theme.html.twig' %}
答案 1 :(得分:1)
根据the doc看来您要在form_theme
中声明主题:
# app/config/config.yml
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
globals:
register_form_theme: 'MpShopBundle:Form/Themes:register_theme.html.twig'
register_form_popup_theme: 'MpShopBundle:Form/Themes:register_popup_theme.html.twig'
form_themes:
- 'MpShopBundle:Form/Themes:register_theme.html.twig'
- 'MpShopBundle:Form/Themes:register_popup_theme.html.twig'
# ...
我让你在全球范围内使用它。但如果这不起作用,只需尝试直接在{% form_theme form 'MpShopBundle:Form/Themes:register_popup_theme.html.twig' %}