如果我在一个小页面中有两个表单,并且想要呈现不同的表单主题,那么它是不起作用的。我的两个表单都有第一个主题。例如:
在配置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>
问题是,这两种形式都是以第一个主题呈现的。。。为什么?有什么办法让它发挥作用吗?
迟做总比不做好,因为这个问题在StackOverflow中排名很高:在Symfony2(甚至更高?)中,你可以在Twig模板中设置多个表单主题。语法为(注意with
关键字):
{% form_theme form with ['MpShopBundle:Form/Themes:register_theme.html.twig', 'MpShopBundle:Form/Themes:register_popup_theme.html.twig'] %}
这是关于Symfony问题的讨论,但我相信它从未被正确地记录下来。
关于最初的问题,我认为解决方案是为两个不同的形式视图变量(register_form
和register_popup_form
)设置两个不同形式的主题。
{% form_theme register_form 'MpShopBundle:Form/Themes:register_theme.html.twig %}
{% form_theme register_popup_form 'MpShopBundle:Form/Themes:register_popup_theme.html.twig' %}
根据文档,您似乎必须在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' %}
中直接键入这两个字符串