TWIG переопределить блок в INCLUDE шаблоне

Author Роман Чернышов    Category HTML, PHP     Tags , Комментариев 0 Дата 26 Сен

Странный получился заголовок поста, но думаю тем кто столкнулся со следующей проблемой, в процессе работы с шаблонизатором TWIG, будет всё понятно. (О самом шаблонизаторе, его преимуществах и недостатков коих не так их и много, напишу в следующем посте, а пока забегая вперед, обсуждаем проблему)
Имеем следующую структуру шаблона:

Шаблон main.twig:

{% include header.twig %}
{% block block1 %}
{% endblock %}

Шаблон header.twig:

{% block block2 %}
header
{% endblock %}

Шаблон index.twig:

{% extends "main.twig" %}
{% block block1 %} text for block 1 {% endblock %}
{% block block2 %} text for block 2 {% endblock %}

При вызове шаблона index.twig, блок block1 в родительском шаблоне main.twig заменяется на блок из шаблона index.twig. По логике следует также, что блок block2 находящийся в шаблоне header.twig (который инклудится в шаблоне main.twig) так же заменится на блок из шаблона index.twig, но этого не происходит.

Длительные поиски решения, ни к чему толковому не привели. Заменить блок в подключенном INCLUDE шаблоне так и не получилось. Единственное решение в данной ситуации видится пока следующим:

Шаблон main.twig:

{% block block2 %}{% include header.twig %}{% endblock %}
{% block block1 %}
{% endblock %}

Шаблон header.twig:

header

Шаблон index.twig:

{% extends "main.twig" %}
{% block block1 %} text for block 1 {% endblock %}
{% block block2 %} text for block 2 {% endblock %}

Т.е. мы перенесли теги блока в родительский шаблон main.twig, и переопределяем подключаемый файл. У этого способа есть свои недостатки, но тем не менее он работает.

Если у вас есть свои идеи, буду рад выслушать.

Оставить комментарий

Об авторе и блоге Чернышов Р.В. Сертификат. Топ 10% лучших фрилансеров, Чернышов Р.В.

Друзья, всем привет!

Меня зовут Роман Чернышов, я веб-разработчик и данный блог посвящен моим проектам и бизнесу.

Тут я делюсь личным опытом
и отвечаю на вопросы. Я всегда готов к сотрудничеству с вами, готов реализовать проект любой сложности(опыт 10+ лет).

Если у вас есть вопросы, предложения, вы хотите совершить покупку моих решений или заказать работу, пишите!



Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка