Symfony 2 — Форма темы — Переопределенный блок визуализируется два раза

Я пытаюсь настроить кнопку отправки формы темы, но эта кнопка обрабатывается два раза. Первый раз, когда блок переопределяется, и второй раз, когда я использую его в своей форме.

Вот код и результат.

Большое спасибо.

{# src/YagoQuinoy/Simple/BlogBundle/Resources/views/Blog/searchArtciles.html.twig #}

{% form_theme form _self %}

{% block submit_widget %}
<button><i class="fa fa-bicycle"></i></button>
{% endblock submit_widget %}

{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
{{ form_errors(form.search) }}
{{ form_widget(form.search) }}
{{ form_widget(form.submit, {'attr': {'class': 'e-search-articles-submit'}}) }}
{{ form_end(form) }}

Ссылка на изображение (не имеет 10 репутации) Двойное изображение кнопки

0

Решение

Решено с использованием отдельного файла шаблона, как это предлагается в документации.

http://symfony.com/doc/current/cookbook/form/form_customization.html#method-2-inside-a-separate-template

1

Другие решения

Если вы посмотрите на https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig, тогда вы можете видеть, что {% block submit_widget%} не содержит элемент кнопки.

submit_widget выглядит так:

{% block submit_widget -%}
{% set type = type|default('submit') %}
{{- block('button_widget') -}}
{%- endblock submit_widget %}

И этот блок содержит button_widget:

{% block button_widget -%}
{% if label is empty -%}
{%- if label_format is not empty -%}
{% set label = label_format|replace({
'%name%': name,
'%id%': id,
}) %}
{%- else -%}
{% set label = name|humanize %}
{%- endif -%}
{%- endif -%}
<button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ label|trans({}, translation_domain) }}</button>
{%- endblock button_widget %}

Вы должны изменить button_widget (и добавить класс фа фа велосипед), если вы хотите добавить шрифт Awesome icon — например:

{% block button_widget -%}
{% if label is empty -%}
{%- if label_format is not empty -%}
{% set label = label_format|replace({
'%name%': name,
'%id%': id,
}) %}
{%- else -%}
{% set label = name|humanize %}
{%- endif -%}
{%- endif -%}
<button type="{{ type|default('button') }}" {{ block('button_attributes') }}><i class="fa fa-bicycle"></i>{{ label|trans({}, translation_domain) }}</button>
{%- endblock button_widget %}
0

По вопросам рекламы [email protected]