Wechseln zu: Navigation, Suche

Schleifen (for loop)

Verwandte Themen:


DotLiquid bietet ebenfalls die aus anderen Programmiersprachen bekannte Möglichkeit der Abfrage-Schleifen in Arrays mit mehreren Inhalten.

{% for item in array %}
 {{ item }} 
{% endfor %}

#=> Die Schleife gibt nacheinander alle Inhalte des Arrays einmal aus.

Auch mehrdimensionale Arrays, zum Beispiel bestehend aus einer Artikelnummer item[0], einem Artikelnamen item[1] und einer Artikelbeschreibung item[2] sind möglich.

Ein Beispiel dazu:

{% for item in hash %}
 {{ item[0] }} : {{ item[1] }} 
{% endfor %}

#=> Diese Schleife gibt die Artikelnummer und den Artikelnamen getrennt durch einen Doppelpunkt, für jedes Item des Arrays, aus.

Während jeder Schleife existieren in DotLiquid folgende feste Hilfsvariablen, die für Styling- oder Steuerungsfunktionen sinnvoll einsetzbar sind:

  • forloop.length => Anzahl aller Items in der Schleife.
  • forloop.index => Aktuelle Position innerhalb der Schleife.
  • forloop.index0 => Aktuelle Position innerhalb der Schleife inkl. 0.
  • forloop.rindex => Wieviele Positionen innerhalb der Schleife folgen noch.
  • forloop.rindex0 => Wieviele Positionen innerhalb der Schleife folgen noch inkl. 0.
  • forloop.first => Hierbei handelt es sich um eine Abfrage, ob der aktuelle Eintrag der erste in der Schleife ist.
  • forloop.last => Hierbei handelt es sich um eine Abfrage, ob der aktuelle Eintrag der letzte in der Schleife ist.

Über diverse zusätzliche Attribute einer Schleife, ist es möglich zu definieren, welche Inhalte bearbeitet und welche übersprungen werden sollen:

  • limit => Beschränkung wie viele Items aus dem Array maximal bearbeitet werden sollen.
  • offset => Das Offset bestimmt, wieviele Items in dem Array übersprungen werden sollen.
  • reversed => Wird ohne Wert übergeben und führt dazu, dass die Schleife rückwärts abgearbeitet wird.

Dazu ein paar Beispiele:

#array = [1,2,3,4,5,6]
{% for item in array limit:2 offset:2 %}
 {{ item }},
{% endfor %}

#=> Diese Schleife würde als Ausgabe 3,4, erzeugen.
{% for item in collection reversed %}
 {{ item }}
{% endfor %}

#=> Diese Schleife gibt alle Inhalte von collection in umgekehrter Reihenfolge aus.

Es ist außerdem noch möglich, die Schleife so zu beeinflussen, dass sie sich nur in einem definierten Rahmen wiederholt. Der Rahmen kann fest oder durch eine Variable festgelegt werden.

Dazu ein Beispiel:

# Der Array Artikel enthält vier Elemente

{% for i in (1..Artikel.quantity) %}
 {{ i }},
{% endfor %}

#=> Die Schleife resultiert in 1,2,3,4,.

Wie geht es weiter?