t3n 31

Einstieg in TYPO3 Flow: Erste Schritte mit dem PHP-Framework

Seite 3 / 3

Doctrine-Migrations

Flow bildet sämtliche Model-Klassen (hier die Author-Klasse) standardmäßig auf Tabellen in einer relationalen Datenbank ab. Genauer gesagt übernimmt das ORM-Framework Doctrine in Flow diese Aufgabe der objektrelationalen Abbildung. Zur Abbildung der Tabellenstruktur – und vor allem der Änderungen daran – arbeitet Doctrine mit so genannten „Migrations“.

Diese kleinen PHP-Skripte werden bei der Installation oder dem Update eines Flow-Pakets ausgeführt und nehmen Änderungen an der Datenbankstruktur vor. Um Doctrine verwenden zu können, muss man Flow zunächst eine Datenbankanbindung vorgeben. Die erfolgt in der Datei Configuration/Development/Settings.yaml.

Angabe der Datenbankanbindung

TYPO3: 
	Flow: 
		persistence:
			backendOptions: 
        		host: '127.0.0.1'
        		dbname: 'quickstart'
        		user: ''
        		password: ''

Listing 7

Für die in Kickstarter erstellten, neuen Model-Klassen benötigt man eine Doctrine-Migration, die die dazugehörige Datenbank-Tabelle erstellt. Dies kann über folgende Kommandozeilenbefehle erfolgen.

Die Doctrine-Migration

$ ./flow doctrine:migrate
$ ./flow doctrine:migrationgenerate

Listing 8

Der letzte Befehl legt eine Migrations-Datei mit den generierten SQL-Befehlen im Verzeichnis Data/DoctrineMigrations an, die man noch mal überprüfen und bennen sollte, um sie danach in das Verzeichnis Migrations/Mysql im eigenen Paket zu verschieben. Anschließend lässt sich die neue Migration mit einem weiteren ./flow doctrine:migrate ausführen und somit zum Beispiel ein Live-System auf das neueste Datenbank-Schema aktualisieren, nachdem eine neue Version eines Projekts live geschaltet wurde.

Fluid-Views

Die eigens für Flow entwickelte Template-Engine Fluid wertet die Views aus, die zuvor mit dem Kickstarter im Verzeichnis Resources/Private/Templates/Author erstellt wurden. Interessant ist zunächst die Datei Resources/Private/Layouts/Default.html. Sie dient als Grundgerüst für alle späteren Views und enthält spezielle „Sections“, die sich in den einzelnen Views mit Inhalt füllen lassen. Die Index-View sieht zum Beispiel vereinfacht dargestellt wie folgt aus:

Eine Index-View

<f:layout name="Default" /> 
<f:section name="Title">List of authors</f:section> 
<f:section name="Content"> 
	<ul>
		<f:for each="{authors}" as="author">
		<li>
		<f:link.action action="show" arguments="{author: author}">{author.name}</f:link.action> 
		<f:link.action action="edit" arguments="{author: author}">Edit</f:link.action> 
		<f:link.action action="delete" arguments="{author: author}">Delete</f:link.action> 
		</li> 
		</f:for>
	</ul>
	<p><f:link.action action="new">Create a new author</f:link.action></p> 
</f:section>

Listing 9

Zur Erinnerung: Unter dem Namen „authors“ erhielt die View im Controller in der index-Action eine Liste aller in der Datenbank verfügbaren Autoren. In der Fluid-View lässt sich diese nun iterieren und wird als eine Liste aller Autoren in HTML ausgegeben. Die Template-Sprache Fluid ermöglicht dabei Kontrollstrukturen wie Bedingungen und Schleifen (wie zum Beispiel die f:for-Schleife im obigen Beispiel). Das Ausführen von PHP-Code oder erweiterter Programmlogik ist in Fluid explizit nicht erlaubt. Wer über die Grundfunktionen von Fluid hinaus den Sprachumfang erweitern möchte (z.B. mit einem Gravatar-Helper), kann dies durch eigene View-Helper tun.

Ausblick

TYPO3 Flow bringt mit seiner aus der Java-Welt inspirierten Ansätzen frischen Wind in die PHP-Framework-Szene – ohne es dem Anwender unnötig kompliziert zu machen. Man muss kein Experte sein, um die ersten Gehversuche mit dem Framework erfolgreich zu bestehen, Anwendungen damit umzusetzen und die Stärken kennen zu lernen.

Die Performance des Frameworks – in den frühen Versionen noch einer der größten Kritikpunkte – hat sich mit den letzten veröffentlichten Versionen aufgrund zahlreicher Optimierungen massiv verbessert. Somit besteht aller Grund zur Hoffnung, dass sich TYPO3 Flow auf lange Sicht erfolgeich neben den etablierten Frameworks wie Symfony oder dem Zend Framework 2 wird behaupten können.

Martin Helmich
Martin Helmich

ist Softwareentwickler beim Webhoster Mittwald. Er ist der Verfasser der Extbase- und Fluid-Dokumentation, die Mittwald kostenlos zum Download bereitstellt. Außerdem ist er Co-Autor des Buchs „Praxiswissen TYPO3“, das im O'Reilly Verlag erschienen ist.

Startseite
  • Seite:
  • 1
  • 2
  • 3

Bitte beachte unsere Community-Richtlinien

Schreib den ersten Kommentar!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung