Mein Problem war vor kurzem, dass ich an Smarty (die Template Engine) per PHP ein Array übergebe, welches dargestellt werden sollte.
So weit, so einfach, allerdings sollten die Daten sowohl Neben- wie auch untereinander dargestellt werden. Ich erklärs mal grafisch; die Ausgabe sollte in etwa so aussehen:
Wert1 Wert2 Wert3 Wert4
Wert5 Wert6 Wert7 Wert8
usw.
Ich hoffe, es ist klar, was ich machen will. So, es ist ebenfalls anzumerken, dass ich die Werte nur einmal an Smarty als Array übergebe, die ganze „Arbeit“ also in Smarty erledigt werden sollte – was ja auch so sein sollte, da es sich um eine reine Darstellungsproblematik handelte.
Wie das ganze in PHP zu lösen wäre ist mir klar, ich möchte allerdings wirklich streng den Code von der Darstellung trennen.
Hier mal die Lösung zum Problem:
Zunächste definiert man eine section, die das übergebene Array durchläuft, allerdings mit Schrittweite 4. Dannach übergibt man die gleiche Array-Variable an cycle und weist dem Ergebnis eine andere Variable zu, auf die man dann zugreift.
{section name=number loop=$myVariable step=4}
{cycle values=$myVariable print=false
assign=myData}
{$myData.arrayElement|upper}
{/section}
Das ganze nun geschickt in eine Table oder div Struktur eingebaut bringt dann das gewünschte Ergebnis, vier Werte nebeneinander und dann beliebig viele untereinandern.
Ich hoffe, ich konnte nun dem ein oder anderen helfen…