【问题标题】:Combining optional block with element in twig将可选块与树枝中的元素结合起来
【发布时间】:2013-10-30 13:05:27
【问题描述】:

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

【问题讨论】:

  • 这是您要找的吗? stackoverflow.com/questions/13774384/…
  • 我认为是!遗憾的是没有办法更优雅地做到这一点,因为我认为后来出现的人会很难立即掌握它,但是谢谢!
  • 我会添加它作为答案。

标签: twig


【解决方案1】:

如果您想仅在某个块有内容时显示某个块,您可以这样解决。希望,这就是你要找的。​​p>

示例 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

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 2019-05-22
    • 2020-10-19
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多