如何仅在某些页面上从 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' %}

解决方法

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

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 %}

demo

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...