Ошибка шаблона формы Symony2 - переменная «виджет» не существует

StackOverflow https://stackoverflow.com/questions/8351320

  •  27-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь изменить date_widget, используя Symfony2 и Twig. Я хотел бы показать только год.

После чтения Symfony 2 Date Date ввод только с выбором года и глава книги Symfony2 о шаблонных формах, которые я скопировал блок date_widget в свой шаблон и получаю ошибку:

Переменной «виджет» не существует в пакете ....

Вот код из моего шаблона:

{% extends '::base.html.twig' %}
{% block body %}

{% block date_widget %}
{% spaceless %}
    {% if widget == 'single_text' %}
         {{ block('field_widget') }}
    {% else %}
        <div {{ block('widget_container_attributes') }}>
            {{ date_pattern|replace({
                '{{ year }}': form_widget(form.year),
            })|raw }}
        </div>
    {% endif %}
{% endspaceless %}
{% endblock date_widget %}

....print form (generated though app/console generate:crud)

{% endblock %}

Какие-нибудь мысли? Спасибо!

Это было полезно?

Решение

Поместите блок date_widget за пределами блока тела и добавьте следующий код после начального расширения

{% form_theme form _self %}

Теперь ваш код должен выглядеть так

{% extends '::base.html.twig' %}
{% form_theme form _self %}

{% block body %}

....print form (generated though app/console generate:crud)

{% endblock %}

{% block date_widget %}
{% spaceless %}
    {% if widget == 'single_text' %}
         {{ block('field_widget') }}
    {% else %}
        <div {{ block('widget_container_attributes') }}>
            {{ date_pattern|replace({
                '{{ year }}': form_widget(form.year),
            })|raw }}
        </div>
    {% endif %}
{% endspaceless %}
{% endblock date_widget %}

http://symfony.com/doc/current/book/forms.html#form-theming

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top