在一个小树枝中象征2多个形式的主题,而不是覆盖


Symfony2 multiple form themes in one twig not overriding

如果我在一个小页面中有两个表单,并且想要呈现不同的表单主题,那么它是不起作用的。我的两个表单都有第一个主题。例如:

在配置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_formregister_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' %} 中直接键入这两个字符串

相关文章: