Twig块定义中的Minus

35

这两者有什么不同:

{%block body %}

并且那个

{%block body -%}

5
好的,我会尽力进行翻译。以下是需要翻译的内容:Yes but I asked May 19 '13 at 11:56 and Michaël Perrin asked Jun 25 '13 at 13:38. And on this page we have great answer from SirDerpington. 是的,但是我在2013年5月19日11:56提出了问题,而Michaël Perrin在2013年6月25日13:38提出了问题。而且在这个页面上,我们有来自SirDerpington的很好的答案。 - nonlux
1个回答

51

我在文档中读到了一些关于此的内容,不确定这是否也适用于{% block ... %}标记。 Twig空格控制

{% set value = 'no spaces' %}
    {#- No leading/trailing whitespace -#}
    {%- if true -%}
        {{- value -}}
    {%- endif -%}
{# output 'no spaces' #}

还有另外一个示例,它会修剪变量前面的空格,但不会在末尾这样做 - 所以效果只在一侧。

{% set value = 'no spaces' %}
    <li>    {{- value }}    </li>
{# outputs '<li>no spaces    </li>' #}
上述示例展示了默认的空白控制修饰符以及您如何使用它来移除标签周围的空格。删除空格会消耗该侧标签的所有空格。可以在标签的一侧使用空格修剪。
因此,我认为您给出的示例之间的区别在于第一个块body开始后会有一个空格。在您的第二个示例body-中,在块开始后没有空格。只需阅读文档条目即可了解其工作原理。
编辑:
一个简单的示例来演示文档中的示例:
{% set value = 'NO space in source code after/before "value"' %}
<li>    {{- value -}}    </li>
...

在Firebug中的HTML标记中输出: 值后没有空格

而这个则是

{% set value = 'space in source code after "value"' %}
<li>    {{- value }}    </li>
...

输出结果:

在第二个示例中"value"和闭合的</li>之间有一个空格。所以减号<code>-</code>可以擦除/修剪例如变量前面、后面或两侧的空格。


1
很有趣了解“空格控制修饰符”是否仅在标记方面需要,还是在由空格分隔的TWIG指令之间也需要(例如{% if true %} (space|newline in template) {% set something = {} %}),以及修饰符是否两侧都需要(.. true -%} / {%- set ..)或者只需要一侧就可以。 - Kamafeather
1
好的,我刚试了一下。实际上这很重要。但只需要一个修饰符(在true%}{% set上)就足够了。否则似乎所有间距都被考虑了(无论是纯TWIG指令之间还是带有HTML标记的指令之间)。 - Kamafeather

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接