Symfony2在一个树枝中的多个表单主题不会覆盖

时间:2015-12-07 07:47:36

标签: php forms symfony

如果我在一个树枝页面中有两个表单,并且想要渲染不同的表单主题,则它不起作用。我的两个表单都有第一个呈现的主题。例如:

在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>

问题是两个表单都是用第一个主题呈现的......为什么会这样?有什么方法可以做到这一点吗?

2 个答案:

答案 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_formregister_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' %}

中键入两个字符串