首页 > 解决方案 > 如何仅在某些页面上从 Symfony 中的基本扩展中排除树枝部分?

问题描述

有没有办法在 Twig 中指定“扩展”以排除其中一个包含的部分?

为了更好地解释我自己,这是我的 base.html.twig

<body>
        {% include '/main/_navbar.html.twig' %}
        {% block body %}
            {% for flashError in app.flashes('success') %}
                <div class="alert alert-success" role="alert">{{ message }}</div> 
            {% endfor %}
        {% endblock %}
        {% include '/main/_footer.html.twig' %}
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="{{ asset('script/app.js') }}"></script>
    </body>

在我的登录页面上,我不需要我的_navbar.html.twig部分。有没有办法不包括(排除)它知道我extends从此base模板中的视图?有没有我可以通过的“选项” extends

这是extend我在登录页面上用于基本模板的代码:

{% extends 'base.html.twig' %}

标签: symfonytwigextendpartialbase

解决方案


只需将您不想包含在单独块中的包含包装起来,然后用空内容覆盖该块,例如

base.html.twig

<body>
        {% block nav %}
            {% include '/main/_navbar.html.twig' %}
        {% endblock %}
        {% block body %}
            {% for flashError in app.flashes('success') %}
                <div class="alert alert-success" role="alert">{{ message }}</div> 
            {% endfor %}
        {% endblock %}
        {% include '/main/_footer.html.twig' %}
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="{{ asset('script/app.js') }}"></script>
</body>

login.html.twig

{% extends "base.html.twig" %}
{% block nav %}{% endblock %}

演示


推荐阅读