symfony - Symfony表单主题冲突
问题描述
我在同一个模板页面中有两个表格,我需要为每个表格申请一个特定的主题。不幸的是,第一个主题覆盖了第二个主题。所以第二个主题根本不适用。
另一件事,在我只有 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 %}
任何想法都会受到赞赏和投票。
解决方案
由于这很可能是缓存的副作用,并且似乎与这两个表单位于完全相同的模板中这一事实有关,因此解决此问题的一种方法可能是将表单与包含分开:
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
推荐阅读
- html - 通过 Shiny 应用程序中的 Twitter 共享小部件将 ggplot 图像附加到推文
- mysql - SQL 尝试在子查询中使用连接表中的列
- sparql - 当 SPARQL 中的分组结果为空时,防止 GROUP_CONCAT 返回空字符串
- android - 如何在 Android 中更改“MaterialDatePicker”的主题?
- python - 让程序在总是随机的文件夹中搜索文件
- mysql - 如何加快涉及 varchar 列上“like”条件的 MySQL 查询?
- google-tag-manager - 用于排序的 Google Tag Manager 跟踪
- sas - 在 SAS 中解析 HTML 数据
- macos - 为什么 fgrep 表现得很奇怪?
- angular - Angular Material - table mat-table 不渲染来自rest api的数据