The final Countdown
Kommentare

Da beim Aufruf keine Action definiert wurde, sucht FLOW3 zunächst die Index-Action und ruft diese auf. Dort wird das CoffeeBeanRepository befragt, das wiederum alle >em>CoffeeBean-Objekte zurückliefert

Da beim Aufruf keine Action definiert wurde, sucht FLOW3 zunächst die Index-Action und ruft diese auf. Dort wird das CoffeeBeanRepository befragt, das wiederum alle >em>CoffeeBean-Objekte zurückliefert und an die View übergibt. Das Repository wird elegant mittels Dependency Injection über die Annotation @inject ein paar Zeilen darüber injiziert und ist selbst leer. FLOW3 hat hier bereits für ein paar vorgefertigte Methoden (wie eben ein findAll(), das alle Objekte findet) gesorgt. Sie lassen sich natürlich beliebig anpassen oder erweitern. Das Template zeigt nun die Objekte an und versieht die View über ViewHelper mit so genannten Action-Links zum Neuanlegen, Löschen und Editieren der Objekte.

Klickt man „Create a new coffee bean“ an, landet man in der New Action, die ihrerseits ein Formular anzeigt, in das man den Namen eingeben kann. Abgeschickt wird es an die Create Action, die aus den POST-Daten automatisch ein CoffeeBean-Objekt erstellt und dieses dem Repository zufügt. Am Ende der Methode wird das Objekt dann automatisch persistiert, also in die Datenbank geschrieben. Zwischenzeitlich wird noch eine so genannte Flash Message zugefügt, die später im Template der Index-Action über einen entsprechenden ViewHelper wieder angezeigt wird. Da die Action ansonsten nichts weiter tun muss, erfolgt am Ende noch eine (vollwertige) Weiterleitung zur Index-Action.

Auch die anderen Actions des CRUD-Prozesses sind einfach aufgebaut, so gibt es einfache Repository-Methoden zum Editieren (update) und Löschen (delete). Hier werden die zugehörigen Objekte automatisch ermittelt (beispielsweise beim Update) und das Update-Formular damit vorausgefüllt. Ebenso ist es beim Löschen, auch hier wird das Objekt automatisch aus dem Repository und damit aus der Datenbank gelöscht. Weiteren Einblick in den Code, die vielen Details und auch in die dahinterliegende Theorie finden Sie im FLOW3-Handbuch [8] .

Validierung

Auch die Validierung in FLOW3 ist elegant gelöst. So kann man zahlreiche Validatoren in das System bringen um damit jeden Aspekt zu kontrollieren. Wollen wir beispielsweise erreichen, dass der Name unsere CoffeeBean mindestens fünf aber höchsten zehn Zeichen umfassen darf, so können wir dafür eine Validator-Annotation direkt bei der Eigenschaft im Model (Packages/Application/Acme.Demo/Classes/Domain/Model/CoffeeBean.php) notieren:

/**
 * The name
 * @var string
 * @validate StringLength(minimum = 5, maximum = 10) 
 */
protected $name; 

Sobald nun eine Action dieses Objekt als Parameter übergeben bekommt, wird die Eigenschaft name entsprechend validiert. Möglich sind hier die Ausgabe einer Fehlermeldung, die automatische Weiterleitung in eine eigene fehlerbehandelnde Action oder das Korrigieren der fehlerhaften Eigenschaft. Neben den eingebauten Validatoren gibt es zudem auch die einfache Möglichkeit individuelle Validatoren zu verwenden, um einzelne Eigenschaften oder das Objekt als Ganzes zu validieren. Schließlich lassen sich die Validatoren auch direkt gezielt in einer Action notieren, sodass sie nur dort wirksam sind. Damit lassen sich nahezu alle Szenarien der Validierung erschöpfend behandeln.

Cheat Sheet

 Nachdem das Framework auf der Philosophie Convention over Confguration basiert, sind also viele Konventionen bereits getroffen worden, um die man sich dann nicht mehr kümmern muss. Allerdings muss man diese Konventionen irgendwann einmal auswendig lernen oder zumindest wissen, wo man sie nachschlagen kann. Der Autor hat daher die wichtigsten Dinge für FLOW3 und Fluid auf Cheat Sheets zusammengefasst, die man sich unter [9] kostenlos herunterladen kann.

Ausblick

Dieses kurze Tutorial, das grundsätzlich auf dem Quickstart Manual [10] des FLOW3-Teams basiert, kann natürlich nur einen groben Überblick über die zahlreichen Fähigkeiten von FLOW3 geben. Viele wichtige Aspekte, wie die Interaktive Shell, Routing, Signal Slots oder AOP hat der Artikel mangels Platz beispielsweise noch nicht einmal erwähnt, und andere Aspekte sind nur leicht gestreift worden. Tatsächlich soll der Artikel vor allem eines bewirken: die ersten Hürden nehmen und Appetit auf dieses neue, leistungsfähige und spannende Framework machen. Denn das Programmieren in oder mit FLOW3 macht einfach Spaß, das kann der Autor garantieren.

Ausblick

Dieses kurze Tutorial, das grundsätzlich auf dem Quickstart Manual [10] des FLOW3-Teams basiert, kann natürlich nur einen groben Überblick über die zahlreichen Fähigkeiten von FLOW3 geben. Viele wichtige Aspekte, wie die Interaktive Shell, Routing, Signal Slots oder AOP hat der Artikel mangels Platz beispielsweise noch nicht einmal erwähnt, und andere Aspekte sind nur leicht gestreift worden. Tatsächlich soll der Artikel vor allem eines bewirken: die ersten Hürden nehmen und Appetit auf dieses neue, leistungsfähige und spannende Framework machen. Denn das Programmieren in oder mit FLOW3 macht einfach Spaß, das kann der Autor garantieren.

Patrick Lobacher ist Inhaber und Geschäftsführer der Full-Service-Agentur „typovision* – agentur für digitale kommunikation“ (http://www.typovision.de), Autor, Trainer, Programmierer, Silber-Mitglied in der TYPO3 Association, „Certified TYPO3 Integrator“ und nicht zuletzt ein Digital Native der ersten Stunde.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -