Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

De:Arraynotation

From TYPO3Wiki
Jump to: navigation, search

fluid (Liste fluid) Mit den geschweiften Klammern lassen sich nicht nur an das Template übergebene Variablen abrufen, es lassen sich auch Arrays erstellen. Die Arraynotation wird immer dann benötigt, wenn mehrere Daten an einen Parameter eines ViewHelpers übergeben werden müssen. So zum Beispiel bei dem Parameter map aus dem ViewHelper f:alias, oder dem Parameter parameter des ViewHelpers f:link.action. Auch der Parameter each aus dem f:for-ViewHelper erwartet ein Array. Diese Arrayparameter könnt Ihr nun mit einem an das Template übergebene Array befüllen oder mit der hier erklärten Arraynotation, die nur fest vorgegebene Arrayelemente erlaubt.

Beispiel mit einem Eintrag

Hier erstellen wir ein einfaches Array mit nur einem Eintrag. Links steht immer der Key und rechts immer der Wert, der dem Key zugeordnet ist. Der Key ist automatisch als neue Variable innerhalb des ViewHelpers verfügbar.

XML / HTML:
<f:alias map="{name: 'Max Mustermann'}">
  <p>Ich heiße: {name}.</p>
</f:alias>

Beispiel mit mehreren Einträgen

Wenn in einem Array mehrere Einträge vorhanden sein müssen, dann werden diese Einträge durch ein Komma von einander getrennt.

XML / HTML:
<f:alias map="{vorname: 'Max', nachname: 'Mustermann'}">
  <p>Ich heiße: {vorname} {nachname}.</p>
</f:alias>

Beispiel für verschachtelte Arrays

Oft müssen Parameter an einen Link angefügt werden. Kein Thema, solange der Parameter nur aus mitarbeiter=25 besteht. Wie es aber bei TYPO3-Extensions so ist muss für jede Extension ein Prefix vor den Parameter gesetzt werden (z.B. tx_ttnews[category]=25). Eine solch verschachtelte Parameterübergabe lässt sich zum Beispiel so lösen:

XML / HTML:
<f:link.action action="list" parameter="{tx_ttnews:{category:25}}">

Beispiel mit mehreren Arrays in einem Array

Wie in dem oberen Beispiel schon gelernt, werden mehrere Einträge mit Hilfe eines Kommas von einander getrennt. Auch wenn es evtl. etwas unübersichtlich aussieht, aber diese Vorgehensweise klappt auch bei mehreren Arrays.

XML / HTML:
<f:alias map="{mitarbeiter: {0: {vorname: 'Stefan', stadt: 'Lindlar'},1: {vorname: 'Petra', stadt: 'Lindlar'},2: {vorname: 'Sascha', stadt: 'Remscheid'},3: {vorname: 'Patrick', stadt: 'Bonn'},4: {vorname: 'Sven', stadt: 'Gummersbach'},5: {vorname: 'Andrea', stadt: 'Wuppertal'}}}">
    <table cellpadding="5" cellspacing="0" border="2">
        <f:for each="{mitarbeiter}" as="kollege" reverse="1" key="eintrag">
            <tr>
                <th colspan="2">Eintrag: {eintrag}</th>
            </tr>
            <tr>
                <td>{kollege.vorname}</td>
                <td>{kollege.stadt}</td>
            </tr>
        </f:for>
    </table>
</f:alias>