将可选块与树枝中的元素组合在一起

时间:2013-10-30 13:05:28

标签: 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,我宁愿在基本模板中设置它而不打扰它。但是如果没有覆盖块,我不希望页面中有空元素。

1 个答案:

答案 0 :(得分:2)

如果您想要仅在具有内容的情况下显示某个块,您可以像这样解决它。希望,这就是你要找的东西。

示例index.html.twig

{% set _block = block('dynamic') %}
{% if _block is not empty %}
    {{ _block|raw }}
{% endif %}

示例part.html.twig

{% extends "index.html.twig" %}

{% block dynamic %}
    Block content goes here.
{% endblock %}

来源: How to check if a block exists in a twig template - Symfony2