Om door een lijst van gegevens te gaan kan gebruikt worden van een foreach statement.

foreach, foreachelse

{{foreach $items as $item}}
    {{$item}}
{{/foreach}}
{{foreachelse}}
    Geen items gevonden
{{/foreach}}

Argumenten

Daarbij kan gebruikt gemaakt worden van de volgende argumenten in een foreach:

ArgumentToelichting
fromThe array/lijst waar doorheen gelopen moet worden
keyDe sleutel van de huidige array element waar doorheen wordt gelopen
itemDe waarde van huidige array element waar doorheen wordt gelopen
name

De naam van de foreach.

Deze naam kan gebruikt worden om eigenschappen van de iteratie in de foreach op te halen, zoals: 

  • index: Geeft de huidige iteratie-index terug (begint bij 0).
  • iteration: Geeft het huidige iteratietelling terug (begint bij 1)
  • first: Controleert of het de eerste iteratie is (retourneert true of false)
  • last: Controleert of het de laatste iteratie is (retourneert true of false)
  • total: Geeft het totale aantal iteraties terug.
  • show: Geeft het aantal iteraties weer dat zichtbaar is op de huidige pagina (gebruikt bij paginering)

Voorbeelden

Zie het onderstaand voorbeeld waarbij een lijst met producten wordt doorlopen:

foreach

{{$producten = [6351,23122,392367]}} 

<ul>
{{foreach from=$producten name=products key=key item=data}}
   <li>{{$key}}: {{$data}}</li>
{{foreachelse}}
   <li>Er zijn geen producten beschikbaar</li>
{{/foreach}}
</ul>


Uitkomst

<ul>
   <li>0: 6351</li>
   <li>1: 23122</li>
   <li>2: 392367</li>
</ul>

foreach met sort en filter

Bij een foreach kan gebruik gemaakt worden van de modifiers sort en filter om de lijst/array met gegevens te sorteren of specifieke gegevens te filteren.

{{foreach from=$producten|sort:'product_id':'DESC'|filter:'category':'Jeans' name=products key=key item=data}}
   {{$data}}
{{/foreach}}

first

In sommige gevallen kan het wenselijk zijn om te weten wanneer de foreach de eerste rij uit de lijst doorloopt. Dit kan je bepalen met behulp van de first parameter welke de waarde TRUE zal bevatten als het de laatste rij betreft;
{{$smarty.foreach.<naam foreach>.first}}

foreach first

{{$producten = [6351,23122,392367]}} 

{{foreach from=$producten name=products key=key item=data}}
   {{if $smarty.foreach.products.first}}
      Hieronder een overzicht van de bekeken producten;
   {{/if}}

   {{$data}}
{{foreachelse}}
   Er zijn geen producten beschikbaar
{{/foreach}}


Uitkomst

Hieronder een overzicht van de bekeken producten;
6351
23122
392367

index

De index bevat de huidige lijst index welke wordt doorlopen, welke start bij 0;
{{$smarty.foreach.<naam foreach>.index}}

foreach index

{{$producten = [6351,23122,392367]}} 

{{foreach from=$producten name=products key=key item=data}}
   {{if $smarty.foreach.products.index eq 0}}
      Hieronder een overzicht van de bekeken producten;
   {{/if}}

   {{$data}}
{{foreachelse}}
   Er zijn geen producten beschikbaar
{{/foreach}}


Uitkomst

Hieronder een overzicht van de bekeken producten;
6351
23122
392367

last

In sommige gevallen kan het wenselijk zijn om te weten wanneer de foreach de laatste rij uit de lijst doorloopt. Dit kan je bepalen met behulp van de last parameter welke de waarde TRUE zal bevatten als het de laatste rij betreft;
{{$smarty.foreach.<naam foreach>.last}}

foreach last

{{$producten = [6351,23122,392367]}} 

{{foreach from=$producten name=products key=key item=data}}
   {{$data}}{{if NOT $smarty.foreach.products.last}},{{/if}}
{{foreachelse}}
   Er zijn geen producten beschikbaar
{{/foreach}}


Uitkomst

6351,
23122,
392367