Блок не найден в шаблоне после обновления Twig и обновления до Symfony 2.8.18

Я только что обновился с Symfony 2.7 до 2.8.18, и теперь я получаю следующую ошибку при доступе к странице с формой, которая ранее работала до обновления.

Блок "_appbundle_crmpicco_reserve_widget" в шаблоне "::base.html.twig" не существует.

reserve.html.twig:

// this extends the top-level ::base.html.twig
{% extends "AppBundle:CRMPicco:base.html.twig" %} 
{% block _appbundle_crmpicco_reserve_widget %}
    {% spaceless %}
    {# Call the parent setup #}
    {{- parent() -}}

    {# Display the widget now #}
    {{ form_widget(form) }}
    <span class='validation-box glyphicon'></span>
    {% endspaceless %}
{%- endblock %}

Также было заметное обновление в Twig как часть моего composer update:

  - Removing twig/twig (v1.24.2)
  - Installing twig/twig (v2.2.0)
    Downloading: 100%      

Изменилось ли наследование шаблонов в более поздних версиях? Я ничего не могу найти в документах по обновлению Symfony.


person crmpicco    schedule 16.03.2017    source источник
comment
Вы можете попробовать оставить Twig 1: composer require "twig/twig:~1.24"   -  person A.L    schedule 16.03.2017
comment
@A.L Да, я попытаюсь вернуться к Twig 1. Но должен ли я сделать это с Twig 2?   -  person crmpicco    schedule 16.03.2017
comment
Twig 2 требует php 7 afaik   -  person craigh    schedule 16.03.2017
comment
1) По моему мнению, это должно быть вполне возможно в Twig 2, так что это не должно быть проблемой. 2) У вас действительно есть мошеннический знак - в вашем заявлении endblock. Однако это не должно быть причиной этой проблемы!   -  person Ben Hillier    schedule 16.03.2017
comment
Покажи нам AppBundle:CRMPicco:base.html.twig   -  person LP154    schedule 16.03.2017
comment
@BenHillier знак - используется для удаления пробелов, см. документация.   -  person A.L    schedule 16.03.2017
comment
@A.L Я никогда этого не знал! Я узнал кое-что полезное! Спасибо!   -  person Ben Hillier    schedule 17.03.2017


Ответы (1)


Ваша проблема в том, что блок _appbundle_crmpicco_reserve_widget не существует в родительском шаблоне AppBundle:CRMPicco:base.html.twig. В Twig 1.x вызов parent() внутри дочернего шаблона автоматически возвращался. Это устарело в Twig 1.29 и вызывает исключение, начиная с Twig 2.0.

person xabbuh    schedule 16.03.2017