如何减少Twig模板

时间:2017-05-19 08:48:05

标签: twig

我在twig模板中有if / else条件,它会切换代码块的out标记,但内部块是相同的。有没有办法减少重复而不创建单独的文件?
这就是我现在所拥有的:

{% if condition %}
    <a href="">
        {{ content }}
    </a>
{% else %}
    <span>
        {{ content }}
    </span>
{% endif %}

我希望做的事情如下:

{% if condition %}
    <a href="">
        {% include mycontent %}
    </a>
{% else %}
    <span>
        {% include mycontent %}
    </span>
{% endif %}

{% mycontent %}
    {{ content }}
{% endmycontent %}

这样的事情可能吗?

2 个答案:

答案 0 :(得分:2)

如果您不想使用额外的文件,可以使用宏:

{% import _self as macro %}

{% macro foo(content) %}
    {{ content }}
{% endmacro %}

{% for condition in [0, 1, 0, 1, ] %}
    {% if condition %}
        <a href="">{{ macro.foo('Bar') }}</a>
    {% else %}
        <span>{{ macro.foo('Bar') }}</span>
    {% endif %}
{% endfor %}

fiddle

答案 1 :(得分:0)

您要做的事情必须使用普通语法完成。一个额外的文件。并包含此文件。

但如果你想在没有额外档案的情况下这样做。使用{%set variablecontent =“将内容放在此处”%},然后在“{%mycontent%}”部分中使用{{variablecontent}}

希望这会有所帮助