Twig Loop IF Inline Statement Modulu Funktion

Von Roland Golla
0 Kommentar
TWIG For Loop Inline Filter

Ein Twig Loop If Inline Statement bedeutet für mich eine große Vereinfachung der HTML Syntax. Die Inspiration dafür habe ich im Javascript gefunden. Aktuell arbeite ich in einem privaten Side Project mit Javascript. Und dabei ganz konkret mit VueJS. Wie immer zeige ich euch hier erst einmal die Lösung und danach die Geschichte, die mich dahin gebracht hat. Viel Spass.

Ein Twig Loop IF Inline Statement für ein Modulu Beispiel mit Filter

{% for key,item in content.aboutUsCounterItems|filter((item,key) => key is not divisible by(2)) %}
Twig Loop IF Inline

Hier sieht man meine Lösung mit einem Twig Filter. Ganz konkret geht es hier um eine Aufzählung, die sich auf zwei unterschiedliche Listen in zwei Divs verteilt. Daher ist es für mich wichtig auf der einen Seite nur gerade und auf der anderen Seite nur ungerade Keys auszugeben. Leider kann man hier nicht einfach auf die Variable des Loop Index zugreifen. Für den Filter muss die Variable so übergeben werden, achtet auf die umgekehrte Reihenfolge.

Twig key is not divisible by(2) Filter in IF Inline Statement

DDEV mit Docker für das Sulu CMS
DDEV mit Docker für das Sulu CMS

Für mein aktuelles Template kam mir sofort die Modulu Funktion in den Sinn. Die eine Liste sollte also mit allen Items, deren Index teilbar durch zwei ist befüllt werden. Und die andere mit allen deren Index nicht durch zwei teilbar ist. Hier einmal beide Beispiele untereinander.

{% for key,item in content.aboutUsCounterItems|filter((item,key) => key is divisible by(2)) %}
{% endfor %}
{% for key,item in content.aboutUsCounterItems|filter((item,key) => key is not divisible by(2)) %}
{% endfor %}

Auf diese Art des Twig Inline Statements vereine ich die for-Schleife direkt mit einem If-Statement über die Filter Funktion. Wenn es nicht inline ist, habe ich jedes mal die For-Schleife und darin dann nochmal ein If-Statement. Hier die Auflösung für den das erste Twig Examle.

Twig For Loop mit verschachtelten If Statement

Webdesign Agenturen Zweiklassen Gesellschaft
Webdesign Agenturen Zweiklassen Gesellschaft
{% for key,item in content.aboutUsCounterItems %}
  {% if key is divisible by(2) %}
  {% emdif %}
{% endfor %}

Das bläht den Code natürlich immer unnötig auf. Dabei ist mir dieser Usecase jetzt schon in mehreren Twig Templates bzw. HTML Vorlagen untergekommen. Alleine in dem aktuellen neuen Template für „TESTIFY – Agentur für Tests“ sind direkt zwei dieser Fälle untereinander. Grund genug für mich direkt ein PHPStorm Live Template anzulegen.

PhPStorm Live Template mit Twig For Loop und Filter auf Loop Index

{% for key,item in content.$key$|filter((item,key) => key is divisible by(2)) %}
    $end$                                            
{% endfor %}

Das Beispiel ist hier schon für das Sulu Symfony CMS angelegt worden. Ein ausführliches Video zum effektiven Einsatz eigener PhpStorm Templates gibt es hier direkt im YouTube Tutorial.

0 Kommentar

Tutorials und Top Posts

Gib uns Feedback

Diese Seite benutzt Cookies. Ein Akzeptieren hilft uns die Seite zu verbessern. Ok Mehr dazu