2017-05-19 2 views
-1

Ich habe eine if/else-Bedingung in einer Zweigvorlage, die das out-Tag eines Codeblocks umschaltet, der innere Block ist jedoch derselbe. Gibt es eine Möglichkeit, die Duplizierung zu reduzieren, ohne eine separate Datei zu erstellen?
Dies ist, was ich im Moment haben:So reduzieren Sie die Duplizierung in der Twig-Vorlage

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

Ich hatte gehofft, etwas wie zu tun:

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

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

Ist so etwas möglich?

+0

Platz '{{content}}' in der Datei 'content.twig.html' und wechseln Sie in' {% include „content.twig. html "%}' – DarkBee

+0

Gibt es eine Möglichkeit, dies ohne eine zusätzliche Datei zu tun? – Votemike

Antwort

2

hilft, wenn Sie nicht wollen, zusätzliche Dateien zu verwenden, können Sie Makros verwenden:

{% 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

0

Was Sie tun möchten, muss mit der normalen Syntax erfolgen. eine zusätzliche Datei. und diese Datei einschließen.

Aber wenn Sie dies ohne zusätzliche Datei tun möchten. Verwenden Sie das {% set variablecontent = "Hier Inhalt setzen" %} und dann in Ihrem "{% myCONTENT%}" Teil u setzen {{}} variablecontent

Hoffnung dieses

+0

Das würde für ein kleineres Stück Inhalt funktionieren, aber mein Inhalt ist etwas größer. Trotzdem danke. – Votemike

+0

@Votemike dachte so –

Verwandte Themen