Twig 避免在细枝模板中使用相同的语句
我有Twig 避免在细枝模板中使用相同的语句,twig,template-engine,Twig,Template Engine,我有 {%if element.type=='text%} ... {%elseif element.type=='image%} ... {%endif%} 如您所见,我必须多次执行相同的if条件。 怎样才能避免每次重复的情况?我对小树枝模板非常陌生。您通常会有一些冗余。但在我看来,重复HTML块而不是细枝是更好的做法 <div class="{{element.type == 'cover' ? 'cover-full' : 'fixed-width'}}"> <
{%if element.type=='text%}
...
{%elseif element.type=='image%}
...
{%endif%}
如您所见,我必须多次执行相同的if
条件。
怎样才能避免每次重复的情况?我对小树枝模板非常陌生。您通常会有一些冗余。但在我看来,重复HTML块而不是细枝是更好的做法
<div class="{{element.type == 'cover' ? 'cover-full' : 'fixed-width'}}">
<div class="element
{% if element.type == 'text' %}
element-text
{% elseif element.type =='image' %}
element-image
{% endif %}">
{% if element.type == 'text' %}
...
{% elseif element.type == 'image' %}
...
{% endif %}
</div>
{%if element.type='text%}
内容
{%elseif element.type=='image%}
内容
{%else%}
{%include'snippet.html%}
{%endif%}
{%include'snippet.html%}
来减少html块中的冗余您可以简化代码:
{% if element.type == 'text' %}
<div class="element element-text">
content
</div>
{% elseif element.type =='image' %}
<div class="element element-image">
content
</div>
{% else %}
{% include 'snippet.html' %}
{% endif %}
您可以使用细枝宏。在模板的顶部添加
{% if element.type in ['text','image'] %}element-{{element.type}}{% endif %}
后来:
{% macro element_class(type) -%}
{% if type in ['text','image'] %}element-{{type}}{% endif %}
{%- endmacro %}
{% from _self import element_class %}
您可以根据类型使用动态包含。这将把条件的数量减少到一个
<div class="{{element.type == 'cover' ? 'cover-full' : 'fixed-width'}}">
<div class="element {{ element_class(element.type) }}">