Есть ли способ расширить скомпилированный шаблон TWIG от другого?

После нескольких тестов и проверок в скомпилированных шаблонах TWIG я пришел к выводу, что он может быть не реализован, тогда как он находится в шаблонизаторе, из которого вдохновлен TWIG (протестирован с Jinja2 в python)

Ожидаемое поведение следующее:

Основной шаблон:

{# 'list.twig' #}

{% import _self as macro %}

{% for e in results %}
{{ macro.func(e) }}
{% endfor %}

Расширенный шаблон:

{# 'product.list.twig' #}
{% extends 'list.twig' %}

{% macro func(e) %}
This is the product: {{ e.id }}
{% endmacro %}

Еще один расширенный шаблон:

{# 'user.list.twig' #}
{% extends 'list.twig' %}

{% macro func(e) %}
This is the user: {{ e.id }}
{% endmacro %}

Эти шаблоны скомпилированы, но в скомпилированном шаблоне PHP есть предупреждение для вызова функции func в list.twig скомпилированный шаблон.
Тогда как эта линия {% import _self as macro %} составлен в $context["macro"] = $this;, использование $this в этом шаблоне бесполезно, потому что наследование TWIG просто воссоздает полные шаблоны при компиляции без наследования PHP.

Действительно, все 3 скомпилированных шаблона наследуются в PHP от Twig_Template класс, тогда как функция полного наследования унаследовала бы оба расширенных шаблона скомпилированного списка от скомпилированного шаблона основного списка.

Я что-то упустил в extends/embed/include/use Функция TWIG для воссоздания такого поведения или это просто невозможно в реальной версии TWIG?

Спасибо за вашу помощь

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector