blattertech informatikLukas BlatterNiederlenzerstrasse 21
5600 Lenzburg/AGSwitzerland

079 569 25 90
https://www.blattertech.ch

Adresse anzeigen

Smarty Array und foreach Schleifen

11. Juni 2011 |  SMARTY |  SNIPPLETS |  CMS MADE SIMPLE2 Kommentare

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.

Über den Autor:

Lukas Blatter

bloggt und twittert seit 2009 aus Leidenschaft diverse Themen rund um Webdesign, PHP, TYPO3, CMS Made Simple, Computer und weiteres.

Er ist Gründer und Inhaber von blattertech informatik, Ehemann und Vater einer Kinderschar.

Kommentare

Smarty 3
31. Juli 2016 von cyberman
Der Vollständigkeit halber ... die aus PHP bekannten continue; und break; sind standardmäßig in Smarty 3 enthalten ;-).
Re: Smarty 3
1. August 2016 von Lukas Blatter
Danke für die Ergänzung

Auf Grund des hohen Spamaufkommens können zu diesem Beitrag keine Kommentare mehr abgegeben werden