Dieser ViewHelper funktioniert ähnlich wie folgende PHP-Funktion: array_chunk
Dieser ViewHelper dient dazu, ein Array in mehrere Teile zu zerlegen.
Beispielsweise möchte man eine Liste in drei Spalten aufteilen, egal wie viele Einträge die Liste besitzt.
Oder man möchte die Liste in beliebig vielen Zeilen aufteilen, wobei immer drei Listeneinträge gruppiert werden.
Dafür gibt es zwei unterschiedliche Modi:
- "columns" Mode: teilt die Einträge in genau x-Spalten.
Dabei ist es egal, wie groß die Spalten werden.
Typisches Beispiel: drei-spaltige Servicenavigation - "rows" Mode: teilt die Einträge in genau x-Zeilen.
Immer x-Einträge werden gruppiert. Dabei ist es egal, wie viele Spalten am Ende entstehen.
Typisches Beispiel: Fader mit x-Einträge.
Die Einträge lassen sich nicht immer in genau x-Spalten oder x-Zeilen unterteilen.
Das stellt ein Problem dar, da beispielsweise eine HTML Tabelle immer eine fixe Anzahl an Spalten und Zeilen benötigt.
Aus diesem Grund werden die Spalten oder Zeilen mit leeren Einträgen aufgefüllt.
Attribute
Name | Beschreibung | Type | default | required |
---|---|---|---|---|
array | Das Array, das geteilt werden soll | array | - | true |
count | Die Anzahl, nach wie vielen Elementen geteilt werden soll. Bei 'columns'-Mode gibt diese Anzahl an, auf wie viele Spalten die Einträge aufgeteilt werden sollen. Bei 'rows'-Mode gibt sie an, wie viele Einträge zusammen in Zeilen gruppiert werden sollen. | integer | - | true |
mode | 'columns' oder 'rows' Mode | string | - | true |
empty | Platzhalter, mit dem leere Einträge aufgefüllt werden sollen | string | NULL | false |
preserveKeys | Gibt an, ob die ursprünglichen Keys beibehalten werden oder nicht | boolean | false | false |
as | Bezeichnet die Variable, in der das resultierende Array gespeichert werden soll | string | chunk | false |
Beispiel
html
<bh:utility.arrayChunk array="{newsitems}" count="3" mode="rows" as="chunkednews">
<f:for each="{chunkednews}" as="newslist">
{newslist.text}
</f:for>
</bh:utility.arrayChunk>