Twig如何检查正在渲染的模板

时间:2018-09-07 13:30:19

标签: php symfony twig

我有

<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属性在很大程度上取决于下面呈现的模板,例如,如果是Posts模板,则href应为/posts/new,如果它是公告模板,则href应该是/announcements/new,依此类推,这是否有可能?

2 个答案:

答案 0 :(得分:1)

您可以使用全局变量_self来解决此问题,例如

main.twig

s := a[x]

foo.twig和bar.twig

{% include "foo.twig" %}
{% include "bar.twig" %}

nav.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>

demo

答案 1 :(得分:0)

如果路径是唯一依赖于当前模板的内容,那么我将修改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>

导航树枝:

{% for i in 0..3 %}
    <a href="http://www.example.com/{{ path }}/{{ i }}">{{ i }}</a>
{% endfor %}
相关问题