通过满足Twig条件的元素包装内容

时间:2016-11-02 15:42:01

标签: twig

我经常在Twig中使用类似的样板代码:

{% if (somelongcond) %}
<div>
{% endif %}
    <p>Some long content</p>
{% if (somelongcond) %}
</div>
{% endif %}

上面的问题是如果条件改变了,它可能是维护的噩梦,我也必须一直向下看以找到匹配的if语句并查看条件是否相同。

替代方案是这样的:

{% if (somelongcond) %}
  <div>
      {% include 'content' %}
  </div>
{% endif %}
{% include 'content' %}

但这需要创建一个新文件,如果我需要多次这样做,这可能会变得一团糟。

有没有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

这有点短

{{ if somelongcond ? '<div>'|raw }}
    <p>Some long content</p>
{{ if somelongcond ? '</div>'|raw }}

然后,如果重复相同的条件,您可以将其设置在文件的顶部,然后如果您需要更改它,您只需要执行一次。

{% if somelongcond %}
    {% set cond = true %}
{% else %}
    {% set cond = false %}
{% endif %}

{{ if cond ? '<div>'|raw }}
    <p>Some long content</p>
{{ if cond ? '</div>'|raw }}