у меня есть
<div>
<div id = "page-wrapper" class = "sidebar-content white-bg">
<div class = "row border-bottom">
{% include '/layouts/navbar.html.twig' %}
</div>
{% block body %}{% endblock %}
</div>
</div>
Теперь в этом /layouts/navbar.html.twig есть тег привязки, атрибут href которого сильно зависит от того, какой шаблон отображается ниже, например, если это шаблон сообщений, href должен быть /posts/new, если это шаблон объявлений, href должен быть /announcements/new и т. д. это вообще возможно?
хорошо, позволь мне отредактировать материал






Вы можете использовать глобальную переменную _self, чтобы решить эту проблему, например.
main.twig
{% include "foo.twig" %}
{% include "bar.twig" %}
foo.twig и bar.twig
<div>
<div id = "page-wrapper" class = "sidebar-content white-bg">
<div class = "row border-bottom">
{% include "nav.twig" with { 'template': _self, } %}
</div>
{% block body %}{% endblock %}
</div>
</div>
nav.twig
{% set path = '' %}
{% if template == 'foo.twig' %}
{% set path = 'path/to/foo' %}
{% elseif template == 'bar.twig' %}
{% set path = 'path/to/bar' %}
{% endif %}
{% for i in 0..3 %}
<a href = "http://www.example.com/{{ path }}/{{ i }}">{{ i }}</a>
{% endfor %}
Если путь - это единственное, что зависит от текущего шаблона, я бы изменил пример DarkBee, чтобы просто передать путь из родительского шаблона. Таким образом, вам не понадобится структура if / else:
posts.twig:
<div>
<div id = "page-wrapper" class = "sidebar-content white-bg">
<div class = "row border-bottom">
{% include "nav.twig" with { 'path': '/posts/new' } %}
</div>
{% block body %}{% endblock %}
</div>
</div>
announcements.twig:
<div>
<div id = "page-wrapper" class = "sidebar-content white-bg">
<div class = "row border-bottom">
{% include "nav.twig" with { 'path': '/announcements/new' } %}
</div>
{% block body %}{% endblock %}
</div>
</div>
nav.twig:
{% for i in 0..3 %}
<a href = "http://www.example.com/{{ path }}/{{ i }}">{{ i }}</a>
{% endfor %}
Пожалуйста, прочтите Как создать минимальный, полный и проверяемый пример