我在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 %}
这样的事情可能吗?
答案 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 %}
答案 1 :(得分:0)
您要做的事情必须使用普通语法完成。一个额外的文件。并包含此文件。
但如果你想在没有额外档案的情况下这样做。使用{%set variablecontent =“将内容放在此处”%},然后在“{%mycontent%}”部分中使用{{variablecontent}}
希望这会有所帮助