Inhaltstypen
15.03.2016

TYPO3 Flow – Applikation mit Dynamischen Attributen 2/3

Dynamische Attribute im Frontend: So funktioniert die flexible Anzeige

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:

  1. Es werden custom ViewHelper verwendet
  2. Für den POST-Request werden die Daten in einem separaten Daten-Array gespeichert; das muss beim Speichern berücksichtigt werden
  3. 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

Nun muss noch die Verwaltung der Location- und DataField-Objekte eingebaut werden. Diese CRUD-Views und -Actions können ganz bequem per Flow-Kommandozeilentool erstellt werden.

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!

letzte 3 Blog-Beiträge

Meiko Heimtierbedarf: Magento‑2‑Shop an Europa3000 angebunden

Für Meiko Heimtierbedarf haben wir den bestehenden Magento‑2‑Webshop über eine individuelle REST-Schnittstelle an das ERP Europa3000 angebunden und so die Bestellprozesse deutlich verschlankt...

Shopify statt z.B. WooCommerce: Das passende E-Commerce-System für KMUs

Ein Wechsel zu Shopify lohnt sich für KMUs, die Wert auf einfache Bedienung, Unabhängigkeit und schnelles Wachstum legen – ohne technischen Ballast oder Agenturabhängigkeit. insign als erfahrener Shopify- und Magento-Partner unterstützt Sie dabei...

AI eats Software – Jetzt ist der perfekte Zeitpunkt für Individualsoftware

Die grossen Softwareanbieter geraten durch KI unter Druck – eine neue Ära beginnt. Jetzt ist der ideale Zeitpunkt, individuelle Softwarelösungen zu realisieren, die exakt zu Ihren Prozessen passen. "Make" lohnt sich dank KI jetzt mehr denn je...

diesen Beitrag teilen