Twig - 如何排除其他模板?

Kam*_*elj 2 html include symfony twig

我有我的base.html.twig,我想在我的应用程序的大多数部分使用.

它看起来像这样:

<html>
    <head>
        <title>{% block title %}Stack Example{% endblock %}</title>        

        <link rel="stylesheet" href="/resources_admin/dist/css/custom.css">

        {% block stylesheets %}{% endblock %}
    </head>
    <body class="hold-transition skin-blue sidebar-mini">
        {% include 'admin/top_menu/top_menu.html.twig' %}
        {% include 'admin/menu/menu.html.twig' %}
        {% block body %}{% endblock %}
        {% include 'admin/footer/footer.html.twig' %}

        <script src="/resources_admin/dist/js/custom.js"></script>

        {% block javascripts %}{% endblock %}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

一切都好.但我有一个模板,我想使用我的base.html.twig,但我不想包括top_menu.html.twig.

有没有办法从模板中排除某些东西?或者我必须创建一个新的?

got*_*oto 5

您只需要使用默认值设置块.然后在需要时覆盖它.

base.html.twig

<body class="hold-transition skin-blue sidebar-mini">
    {% block topmenu %}
        {# this is the default value #}
        {% include 'admin/top_menu/top_menu.html.twig' %}
    {% endblock %}
    [...]
Run Code Online (Sandbox Code Playgroud)

在您的特定模板中:

{# overwrite default top menu #}
{% block topmenu %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

感谢下面的Florent Destremau评论,更短的版本是

{% block topmenu "" %}
Run Code Online (Sandbox Code Playgroud)

  • @JohnEhrmantraut如果你不喜欢空白块语句,你也可以使用较短的语法:`{%block topmenu""%}` (3认同)