Symfony формы тема конфликта - PullRequest
1 голос
/ 02 апреля 2019

У меня есть две формы на одной странице шаблона, где мне нужно применить для каждой формы одну конкретную тему. К сожалению, первая тема перекрывает вторую. Так что вторая тема вообще не применяется.


Еще одна вещь, на страницах, где у меня есть только форма 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 %}

Любая идея будет оценена и оценена.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Поскольку это вполне может быть побочным эффектом кэширования , и, как представляется, это связано с тем фактом, что две формы находятся в одном и том же шаблоне, способ исправить это может бытьразделите ваши формы, включая:

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

0 голосов
/ 03 апреля 2019

Зарегистрировали ли вы свои пользовательские шаблоны форм в конфигурации ветки?

# 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

...