在 twig 中定义基本模板时,我想使用块为特殊通知保留一个区域。它可能是一个额外的侧边栏,可能包含各种内容(日历或一些额外的信息,等等。默认值应为 emtpy,但任何子模板都可以扩展和填充它。
现在,如果扩展了块,我想将所有这些扩展包含在<div class='special-sidebar'>
中,如果未包含,则不显示任何内容。有没有办法在基本模板中定义包含元素?
{# Base template #}
Content etc...
{% block special %} {# may be overridden by child template #}{% endblock %}
{# child template #}
{% block special %} Here, the special sidebar is filled! {% endblock %}
基本页面应仅显示以下内容:
// base template:
Content etc...
和子页面:
// child template
Content etc...
<div class"special-sidebar"> Here, the special sidebar is filled! </div>
我在哪里以及如何放置 html?我可以在每个孩子中定义它,但这意味着您必须记住每次都使用正确的 html,我宁愿在基本模板中设置它而不是打扰它。但是,如果不覆盖块,我不希望页面中有空元素。
你可以这样解决它,如果你只想在某个块有内容时才显示它。希望,这就是你要找的。
示例索引.html.twig
{% set _block = block('dynamic') %}
{% if _block is not empty %}
{{ _block|raw }}
{% endif %}
示例部件.html.twig
{% extends "index.html.twig" %}
{% block dynamic %}
Block content goes here.
{% endblock %}
来源:如何检查树枝模板中是否存在块 - Symfony2