Suche
Suche Menü

Smarty Array und foreach Schleifen

Mit Smarty werden die Daten in der Regel mit einem ein oder mehrstufen Array übergeben. Um ein Array auszugeben benutzt man in der Regel den foreach Befehl. In diesem Beitrag behandle ich die verschiedenen Möglichkeiten die man mit Smarty beim durchlaufen einer foreach Schleife

Erstes und letztes Element einer foreach Schleife

first ist TRUE wenn die aktuelle Iteration das erste Element ist und last ist TRUE wenn die aktuelle Iteration die letzte Element ist:

{foreach from=$array item=one name=oneitem}
 {if $smarty.foreach.oneitem.first} Beim ersten Element ausführen {/if}
 {if $smarty.foreach.oneitem.last} Beim letzen Element ausführen {/if}
{/foreach}
{foreachelse} Kein Datensatz gefunden {/foreachelse}

Index und Interations

Index gibt den aktuellen Index des Array beginnend mit Null aus. Interation hingegen startet immer bei 1 und wird danach bei jedem durchgang um 1 inkrementiert.

{* Dies ergibt den folgenden Output 0|1, 1|2, 2|3, ... etc *}
{foreach from=$array item=one name=oneitem}
 {$smarty.foreach.oneitem.index}|{$smarty.foreach.oneitem.iteration},
{/foreach}

foreachelse

foreachelse wird ausgeführt wenn keine Datensätze gefunden wurden. Meistens wird jedoch in einem Template bereits vor der foreach Schleife kontrolliert ob diese überhaupt Daten enthält.

{foreach from=$array item=one name=oneitem}
 Mach was
{/foreach}
{foreachelse} Kein Datensatz gefunden {/foreach}

continue; und break;

Die aus PHP bekannten continue; und break; sind standardmässig nicht in Smarty enthalten. Sie können durch das erstellen einer Compiler nachgerüstet werden. Dazu müssen folgende zwei Dateien erstellt werden:

<?php
// compiler.continue.php

function smarty_compiler_continue($contents, &$smarty) {
return 'continue;';
}

sowie

<?php
// compiler.break.php

function smarty_compiler_break($contents, &$smarty) {
return 'break;';
}

Diese beiden Dateien werden unter ./lib/smarty/plugins abgelegt. Danach können die beiden Funktionen mit {break} und {continue} in der foreach Schleife genutzt werden.

{foreach from=$array item=one name=oneitem}
{* Es wird direkt zum nächsten Element der Schleife gesprungen *}
{if $one.name == "Test"}{continue}{/if}
 {* Die Schleife wird abgebrochen *}
{if $one.name == "Test"}{break}{/if}
{/foreach}

Weitere Infos zur foreach Schleife gibt es in der Smarty Dokumentation.

2 Kommentare Schreibe einen Kommentar

  1. Smarty 3
    Der Vollständigkeit halber … die aus PHP bekannten continue; und break; sind standardmäßig in Smarty 3 enthalten ;-).

    Antworten

Schreiben Sie einen Kommentar zu Lukas Blatter Antworten abbrechen

Pflichtfelder sind mit * markiert.