我在同一模板页面中有两个表单,在这里我需要为每个表单申请一个特定的主题。不幸的是,第一个主题优先于第二个主题。 因此,第二个主题根本不适用。
另一件事,在我只有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 %}
任何想法都会受到赞赏和投票。
答案 0 :(得分:1)
这很可能是a side effect of the caching,并且似乎与这两个表单都在完全相同的模板中这一事实有关,解决此问题的一种方法可以是使用include分隔您的表单: / p>
some-page.html.twig
{{ include('partial/form.html.twig', { 'form': form }) }}
{{ include('partial/form-subscribe.html.twig', { 'form_subscribe': form_subscribe }) }}
partial / form.html.twig
{% form_theme form '@ezdesign/_form/bootstrap_full_form_theme.html.twig' %}
{{ form_start(form) }}
{{ form_end(form) }}
partial / 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
答案 1 :(得分:0)
您是否已在树枝配置中注册了自定义表单模板?
# 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