【问题标题】:Symfony form theme conflictSymfony表单主题冲突
【发布时间】:2019-04-02 20:28:37
【问题描述】:

我在同一个模板页面中有两个表格,我需要为每个表格申请一个特定的主题。不幸的是,第一个主题覆盖了第二个主题。 所以第二个主题根本不适用。


另一件事,在我只有 form_subscribe 表单的页面中,第二个主题很好地应用于该表单。只有当我在同一页面中有两个表单时才会出现问题。

第一种形式:

{% form_theme form '@ezdesign/_form/bootstrap_full_form_theme.html.twig' %}
{{ form_start(form) }}
{{ form_end(form) }}

第二种形式:

{% form_theme form_subscribe '@ezdesign/_form/bootstrap_modal_form_theme.html.twig' %}    
{{ form_start(form_subscribe) }}
{{ form_end(form_subscribe) }}

无论如何,没有必要分享我的模板内容: 第一个主题模板:

{% extends 'bootstrap_4_layout.html.twig' %}
{% block form_row -%}
    {%- if compound is defined and compound -%}
        {%- set element = 'fieldset' -%}
    {%- endif -%}
    <{{ element|default('div') }} class="form-group">
    {{- form_widget(form) -}}
    </{{ element|default('div') }}>
{%- endblock form_row %}

第二个主题模板:

 {% extends 'bootstrap_4_layout.html.twig' %}
    {% block form_row -%}
        {%- if compound is defined and compound -%}
            {%- set element = 'fieldset' -%}
        {%- endif -%}
        <{{ element|default('div') }} class="form-group">
        <div class="row">
            {{- form_label(form, null,  {'label_attr': {'class' : 'col-sm-4'}}) -}}
            <div class="col-sm-8">
                {{- form_widget(form) -}}
            </div>
        </div>
        </{{ element|default('div') }}>
    {%- endblock form_row %}

任何想法都会受到赞赏和投票。

【问题讨论】:

标签: symfony symfony-forms


【解决方案1】:

因为这很可能是a side effect of the caching,并且这似乎与两个表单位于完全相同的模板中这一事实有关,解决此问题的一种方法可能是使用包含分隔您的表单:

some-page.html.twig

{{ include('partial/form.html.twig', { 'form': form }) }}
{{ include('partial/form-subscribe.html.twig', { 'form_subscribe': form_subscribe }) }}

部分/form.html.twig

{% form_theme form '@ezdesign/_form/bootstrap_full_form_theme.html.twig' %}
{{ form_start(form) }}
{{ form_end(form) }}

部分/form-subscribe.html.twig

{% form_theme form_subscribe '@ezdesign/_form/bootstrap_modal_form_theme.html.twig' %}    
{{ form_start(form_subscribe) }}
{{ form_end(form_subscribe) }}

这样,您最终每个模板只有一个form_theme,并且不会根据此评论与您的​​主题发生冲突:

{# this form theme will be applied only to the form of this template #}

来源: https://symfony.com/doc/current/form/form_themes.html#applying-themes-to-single-forms

【讨论】:

    【解决方案2】:

    您是否在 twig config 中注册了自定义表单模板?

    # config/packages/twig.yaml (symfony 4) 
    # app/config/config.yml (symfony < 4)
    twig:
        form_themes:
            - ...
            - '@ezdesign/_form/bootstrap_full_form_theme.html.twig'
            - '@ezdesign/_form/bootstrap_modal_form_theme.html.twig'
    

    https://symfony.com/doc/current/form/form_themes.html#applying-themes-to-all-forms

    【讨论】:

    • OP 在他/她的问题中指出,表单主题在不同页面上都可以工作,所以我怀疑这会有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2016-10-30
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    相关资源
    最近更新 更多