Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03180.jsonl.gz/184

TYPO3 Flow – Applikation mit Dynamischen Attributen 2/3
Locations & DataFields
Wie wir in Teil 1 gesehen haben, ist es nicht schwierig, auf Model-Ebene dynamische Attribute hinzuzufügen. Die Ausgabe der Dynamischen Attribute im Frontend gestaltet sich – sobald man sich mit dem Konzept vertraut gemacht hat – auch nicht als grosse Hürde.
Anzeige im Frontend
Wo immer die dynamischen Attribute angezeigt werden sollen, wird ein Fluid-Partial eingebunden. Dieses nennen wir eine DataLocation. Als Parameter muss dabei jeweils ein Location-Objekt, sowie das Datenobjekt übergeben werden, wie folgendes Diagramm illustriert:
Ebenfalls daraus ersichtlich ist die n:n-Verknüfpung zwischen Locations und DataFields. Im Template wird das Partial wie folgt eingebunden:
Dabei wird dem Parameter data das von AbstractDataModel abgeleitete Objekt und dem Parameter Location eine Location-Instanz übergeben. Mit der Location können mehrere DataFields verknüpft sein, welche dann vom data-Objekt die dynamischen Attribute abfragen.
Ein DataField kann einen beliebigen Typ haben, welcher die Art des Feldes definiert. Möglich sind zum Beispiel:
- Checkbox
- Radio-Button
- Inputfeld
- Textfeld
- Datumsfeld
Location-Partial
Die vorhin definierten Typen müssen im Location-Partial abgebildet sein. In unserem Beispiel sieht das so aus:
Dem geschulten Auge fallen dabei drei Dinge auf:
- Es werden custom ViewHelper verwendet
- Für den POST-Request werden die Daten in einem separaten Daten-Array gespeichert; das muss beim Speichern berücksichtigt werden
- Das Partial muss immer innerhalb eines <form>-Tags liegen
ViewHelper
Format\ViewHelper
Ist soweit selbsterklärend. Es braucht nur einen Linien Code in der render-Methode:
Data\CheckedViewHelper
Bestimmt, ob eine Checkbox oder ein Radio-Button gechecked ist oder nicht. Die render-Methode beinhaltet folgende Zeilen:
Data\ValueViewHelper
Liest die von den in der Location definierten DataFields angeforderten Daten aus einem AbstractDataModel-Objekt.
Actions
Die edit- und update-Actions für Views, welche das DataLocation-Partial laden, müssen angepasst werden.
editAction
updateAction
Hier ist $product natürlich das zu speichernde AbstractDataModel-Objekt.
Abschluss
Damit ist auch der zweite Teil abgeschlossen. Das Feature kann nun in der Typo3-Flow-Applikation verwendet werden.
Bei uns wurde das Feature natürlich für die spezifischen Kundenwünsche noch weiter angepasst, was auch problemlos möglich ist. Dies würde aber den Scope dieses Beitrages sprengen. Etwas tiefer in die Materie geht’s dann beim dritten Teil: DQL-Generator!