For loop 使用Twig生成降价,如何在Twig中缩进块?

For loop 使用Twig生成降价,如何在Twig中缩进块?,for-loop,if-statement,twig,indentation,For Loop,If Statement,Twig,Indentation,我很少使用树枝,所以我可能错过了一个重要的提示;如果这是一个微不足道的问题,请原谅我 我将Twig与PHP一起用于生成降价文件 我的小枝文件包含一个或多个{%for%}…{%endfor%}块,在for循环中,有几个{%if%}…{%endif%}和。。。我不能在我的树枝上做任何缩进,否则空格也会出现在我的输出中 一个非常愚蠢的例子:(使用显示原始结果确保看到单词true前的空格) 如果我不缩进我的{%If%}…{%endif%},我得到了正确的结果(),但我的模板中不再缩进块 在我的真实世界中

我很少使用树枝,所以我可能错过了一个重要的提示;如果这是一个微不足道的问题,请原谅我

我将Twig与PHP一起用于生成降价文件

我的小枝文件包含一个或多个
{%for%}…{%endfor%}
块,在for循环中,有几个
{%if%}…{%endif%}
和。。。我不能在我的树枝上做任何缩进,否则空格也会出现在我的输出中

一个非常愚蠢的例子:(使用
显示原始结果
确保看到单词
true
前的空格)

如果我不缩进我的
{%If%}…{%endif%}
,我得到了正确的结果(),但我的模板中不再缩进块

在我的真实世界中的细枝文件中,我可以有多个
{%endif%}
,如下所示,并且它变得不可读

{% for (variable) %}
{% if (condition) %}
{% if (condition) %}
{% if (condition) %}
{% endif %}
{% endif %}
{% endif %}
{% endfor%}
所以。。。您知道有没有一个绝妙的技巧可以在代码中保留缩进,但不影响输出

所需的细枝模板:

{% for (variable) %}
   {% if (condition) %}
      {% if (condition) %}
         {% if (condition) %}
         {% endif %}
      {% endif %}
   {% endif %}
{% endfor%}

您可以在任何打开或关闭的细枝表达式上使用破折号
-
,其中:

  • 结束表达式上的破折号将在左侧进行修剪。
    {%if-true-%}
  • 开头表达式上的破折号会对右侧进行修剪
    {%-if-true%}
  • 在开始表达式和结束表达式的两侧加一个破折号可以对两侧进行修剪
    {%-if-true-%}
请注意:这是一个PHP修剪,因此这意味着它也会修剪您的换行

以下是一个例子:

{% for i in 1..5 %}
   {% if true %}
      {% if true %}
         {%- if  true %}   
foo
         {%- endif %}
      {%- endif %}
   {% endif %}
{% endfor %}
这意味着:

foo
foo
foo
foo
foo
这在这里是可以测试的:


还要注意:实现这类事情是有很多方法的。

非常感谢Benoit!下周我将在工作中尝试这个方法,但据我所知,这正是我需要的答案。我玩了一点,发现spaceless标记已被弃用,甚至与Twig 3一起删除(第1行“main.Twig”中的spaceless标记自Twig 2.7以来已被弃用,请使用带有“apply”标记的“spaceless”过滤器),因此不要使用它。(我们可以在这里看到:)