Zurück zur Startseite

16. Mrz 2010

TYPO3: Meine ersten Erfahrungen mit Extbase und Fluid

Extbase, die moderne Art, Typo3 Extensions zu programmieren. Klingt gut, schließlich will ja jeder auf der Höhe der Zeit sein.  Extbase ist eine TYPO3 Extension, die schon jetzt die Möglichkeit bietet, Extensions im Stil der kommenden Version 5 von Typo3 und FLOW3 zu entwickeln. Stichworte sind hier MVC (Model-View-Controller) und DDD (Domain-Driven-Design). Ergänzt wird das Ganze noch mit Fluid, einer neuen intuitiven Template-Engine.  Aber ist das Neue auch das Bessere? Ich habe diese Frage für mich mit einem dicken JA beantwortet!

MVC ist zunächst ein Design Pattern, also eine bestimmte Art, seine Softwareentwicklung zu strukturieren. So werden bestimmte Bereiche zusammengefasst. Das Model enthält die Datenorganisation, der View erzeugt die Datenausgabe, der Controller steuert und verarbeitet die Datenströme zwischen Model und View.  Das sorgt für sauberen gut wartbaren Code, da z. B. im Controller kein HTML und im View keine Prozesslogik (PHP) enthalten ist. Das z. B. erleichtert auch die Arbeitsteilung, da der Designer nur den View bearbeitet und keine PHP Kenntnisse benötigt.

Hier meine Erfahrungen…

Infos
holte ich mir in den Fachartikeln der t3n:
Die Zukunft der Extensionentwicklung, von Jochen Rau
Fluid: Templating leicht gemacht, von Sebastian Kurfürst
Extension-Entwicklung mit Extbase und Fluid, von Patrick Lobacher
und schaute mir die hervorragende Präsentation von Jochen Rau und Sebastian Kurfürst an (siehe oben).

Als nächstes besorgte ich mir die Dokumentation Extbase als PDF und installierte extbase und fluid, beides ist bei Typo3 4.3 an Bord. Danach „wühlte“ ich mich durch die o. g. Doku, was etwas mühsam war, denn sooo gut ist mein Englisch auch nicht. Immerhin zwingt es zum genaueren mehrmaligen Lesen, was für das Verständnis sehr förderlich ist.

Weitere Vorbereitungen
In der Doku wird die Beispiel-Extension eines Blogs vorgestellt. Also habe ich mir blog_example und auch gleich eine leere efempty als Arbeitsgrundlage installiert.
Nachdem ich mein erstes Erfolgserlebnis mit der Blogextension hatte, wollte ich selbst gleich mal etwas eigenes auf die Beine stellen. Warum nicht eine ganz einfache Adressverwaltung mit nur einer Datenbanktabelle.

Extbase Kickstarter – sowas gibt es auch schon?
Irgendwo habe ich darüber etwas gelesen – wo kriege ich das Ding jetzt her? Der Extbase Kickstarter ist in einer frühen Entwicklungsphase und im TER (noch) nicht verfügbar. Den Kickstarter gibts bei Typo3 Forge  als Subversion unter: http://forge.typo3.org/repositories/show/extension-extbase_kickstarter
Ach ja, herunterladen kann man das auch nicht so einfach, man braucht dafür einen SVN Client z. B. SmartSVN, Subclipse (Eclipse Plugin, meine Wahl).

Wie der Kickstarter funktioniert, zeigt das Video von Sebastian Kurfürst:
Scaffolding width the Extbase Kickstarter

Meine erste Extbase Extension in 5 Minuten
Gebannt hockte ich vor dem Video und erlebte, wie schnell man sich sein Datenmodel „zusammenklicken“ kann. Also los, einen Extension Key vergeben und ein kleines Datenmodel „Company“ mit den üblichen Eigenschaften: Name, Anschrift, PLZ, Ort, Telefon usw. erstellen.  Das Ganze abgespeichert und meine neue Extension im Ext-Manager vorgefunden. Dann installiert, es wurde eine Tabelle angelegt. Meine Extension als Inhaltselement in eine TYPO3 Seite eingebunden, die Seite als Ausgangspunkt gewählt. Über die Listenansicht habe ich dann einfach 2 Datensätze angelegt. Den Cache leeren und die Seite aufrufen und staunen!!!

Mir bot sich eine Liste, in der die Datensätze editiert, gelöscht und neu angelegt werden konnten. Die Liste und die Formulare waren schon da!

Moment mal, was ist mit den Controllern und den Templates?
Die hatte ich doch noch gar nicht erstellt! Tja, das ist die Magie von Extbase, es bringt seine eigenen Standardcontroller und Ausgaben schon mit. Wie genial ist das denn?

Für eine schnelle erste Ausgabe meiner Extension brauche ich also nur das M von MVC. Alles weitere kann man sich dann entwickeln, eigene Controller, Templates usw. Das habe ich dann auch getan und zunächst nur die Templates mit Fluid gebastelt, die Standard-Controller genügten mir, vorerst. Ich habe mir die Templates in der Blog Extension angeschaut. Fluid is so intuitiv aufgebaut, dass ich mir meine einfachen Templates gleich ohne die Doku erstellen konnte, super!

<h1>Firmen</h1>
<p><f:link.action action="new">Neu</f:link.action> | <f:link.action action="index">Liste</f:link.action></p>
<table>
 <th>Kd-Nr</th><th>Firma</th><th>Anschrift</th><th>Telefon/Mobil</th><th></th>
 <f:for each="{companies}" as="company">
 <tr>
 <td>{company.kdnr}</td>
 <td>{company.name}</td>
 <td>{company.address}<br/>{company.postalcode}&nbsp;{company.city}<br/></td>
 <td>{company.phone}<br/>{company.mobile}</td>
 <td><f:link.action action="edit" arguments="{company : company}">Bearbeiten</f:link.action>&nbsp;
 <f:link.action action="delete" arguments="{company : company}">Löschen</f:link.action></td>
 </tr>
 </f:for>
</table>

Template für die Liste

Extbase Namenskonvention
Sehr hilfreich ist auch die Namenskonvention von Extbase. Sie erleichtert die Orientierung erheblich. So bilden sich die Klassennamen aus der Verzeichnisstruktur:

Tx_BlogExample_Controller_BlogController -
blog_example/Classes/Controller/BlogController.php

Ähnliches gilt für die Controller Methoden und die zughörigen Templatenamen

indexAction() - index.html
newAction() - new.html

Mein Fazit:
Extensions entwickeln macht mit Extbase richtig viel Spaß. Man kann sich auf die wesentlichen Dinge seiner Programmierung konzentrieren. Standardaufgaben wie z. B. Datenbankinteraktionen oder Formularvalidierungen stehen bereits zur Verfügung, so dass man sich damit nicht aufhalten muss. Dass man schon in 5 min. eine funktionierende Extension erstellen kann, die nach weiteren 5 min. für einfache Fluid-Templates ein eigenes Layout besitzt, ist einfach nur begeisternd. Meine erste Extbase Extension funktioniert und ich kann mich nun in Ruhe dem Studium der Dokumentationen widmen, um dann auch anspruchsvollere Projekte anzugehen.

erfahrung-extbase1
Ausgabe meiner ersten Extbase Extension mit einfachem Fluid Template

erfahrung-extbase2
Bearbeitungsansicht

Autor: Andreas Kempf, Dienstag, 16.03.2010 Extensionentwicklung TYPO3

10 Comments  Kontakt

10 Comments to TYPO3: Meine ersten Erfahrungen mit Extbase und Fluid

Andre
8. Mai 2010

Wo finde ich ein Beispiel für eine DB-Abfrage?

admin
9. Mai 2010

Hallo Andre
Um DB-Abfragen musst du dich in Extbase-Extensions nicht mehr kümmern. Dafür gibt es die Model-Klasse und die Repositories.
Tipp: Lade dir die Extbase Doku von mittwald runter und steige mal auf Seite 68 bei den Repositories ein. Dort gibt es
Methoden wie z.B. findAll(), welche dem SELECT * FROM….
entspricht.

http://www.mittwald.de/fileadmin/pdf/extbase_fluid.pdf

Andre
9. Mai 2010

Danke! Schau ich mir mal an. Und funktioniert die Linkgenerierung auch mit Realurl? Wie greife ich z.B auf GET und POST Daten zu?

Andre
10. Mai 2010

Hallo,

ich möchte mir mit Tortoise SVN den Kickstarter runterladen, aber ich weiss nicht welchen Link ich angeben muss, den ich im SVN Client eintragen muss. Kannst du den Link mir mal geben?

admin
10. Mai 2010

Hallo Andre,

https://svn.typo3.org/TYPO3v4/Extensions/

listet alle Extensions auf. Einfach den Ordner extbase_kickstarter per SVN kopieren
und dann in typo3conf/ext/ verschieben und Extension aktivieren

Thomas
15. Mai 2012

@Andre: Die Linkgenerierung von Extbase bzw. Fluid hat nichts mit Realurl zu tun. Oder anders gesagt: Das wird auch mit Realurl funktionieren.

Illovo
17. August 2012

extbase_kickstarter heißt jetzt extension_builder und ist im TER verfügbar.

admin
17. August 2012

Danke für die Info!
MfG Andreas

TYPO3 Freelancer
3. September 2020

Funktioniert der Extension-Builder auch bei TYPO3 10.4.x oder wie kann man bei neuerebn TYPO3-Versionen das Grundgerüst einer Extension am besten erstellen?

Andreas Kempf
4. September 2020

Leider kann ich dazu nichts sagen, da ich den Extension Builder nicht benutze.
ich habe mir ein eignes Grundgerüst gebaut, das ich dann anpasse. Da die meisten meiner Kundenprojekte noch auf 8.7 basieren,
beginne ich erst jetzt, mich mit der 10er Version zu beschäftigen.
LG Andreas

Schreib einen Kommentar

*


Dieser BLOG

Neben den Aspekten der Website Erstellung mit TYPO3 oder Wordpress vom Webdesign bis zur Extensionentwicklung, behandelt dieser BLOG auch das Thema Vermarktung im Internet. Zum Online Marketing gehören u.a. Lokale Suchmaschinenoptimierung, OnPage SEO, Online PR, Content Marketing, Newslettermarketing, Social Media, Webanalyse und vieles mehr.
Viel Spaß und neue Erkenntnisse wünscht
Andreas Kempf, Web-aktiv

web-aktiv.com  |  Kontakt   |  Impressum Datenschutz

Supporting Member of the TYPO3 Association

Werbung

XOVI