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

0

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

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

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

{# 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
    Поскольку вы не расширяете родительский шаблон, все блоки отображаются как есть. Это означает, что ваш {% block submit_widget %}...{% endblock submit_widget %} визуализируется, а затем ваша форма с тематической версией из вашего блока submit_widget .
  • 0
    Этот код исходит от встроенного контроллера. symfony.com/doc/current/book/… Что я могу сделать в этом сценарии? У меня закончились идеи. Я думаю, что не собираюсь показывать эту кнопку отправки, но это грустно.
Теги:
twig
theming

2 ответа

1

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

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

  • 0
    Да, какая-то проблема здесь, какое-то решение. Вопрос: почему так? какая разница?
0

Если вы посмотрите на 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 (и добавить класс fa fa-bicycle), если вы хотите добавить шрифт awesome icon - like:

{% 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 %}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню