Schnellster Kickstart in TYPO3 mit dem Extension Builder

Der Extension Builder ist eine Erweiterung um TYPO3 Erweiterungen zu erstellen. Dabei werden benötigte Verzeichnisse und Dateien automatisch erstellt.

Der Extension Builder löste die kickstarter Erweiterung ab der Version 6.2 ab. Diese revolutionierte die Erstellung von TYPO3 Erweiterungen und beschleunigte die Erstellung eines Grundgerüstes inklusive Models um ein tausendfaches.

Ich empfehle dir die aktuellste Version vom Extension Builder bei GitHub zu beziehen. Dort ist die neueste Version der Erweiterung schnell verfügbar. 

Die Oberfläche des Extension Builders

Nach der Installation des Extension Builders erscheint ein neues Backend Modul:

Das Backend Modul vom Extension Builder unterhalb von Admin Tools

Du findest es unter der Gruppe: Admin Tools bzw. Administrationswerkzeuge.

Wenn du den Extension Builder zum ersten Mal aufrufst, dann kommt in der Regel der Einführungsbildschirm:

Einführungsbildschirm des Extension Builders

Am besten du liest die den gewissenhaft einmal durch. Danach wechselt du das Menü auf dem Punkt: Domain Modelling.

Domain Modelling im Extension Builder

Eigenschaften einer Erweiterung

Auf der rechten Seite kannst du die Metadaten deiner Extension eingeben. Du kannst ebenfalls Frontend Plugins und Backend Module vordefinieren. Die notwendigen Einträge in der ext_localconf.php und ext_tables.php werden hier automatisch erstellt.

Das alleine bringt schon eine gewaltige Erleichterung und Beschleunigung in der Extensionentwicklung in TYPO3. Das Startverzeichnis und die Ordner des MVC - Modells inklusive den Hauptkonfigurationsdateien werden autom. erstellt und mit Inhalt befüllt.
Das Herzstück kommt jedoch erst noch auf der rechten Seite, das Domain Modelling.

Domain Modelling

Die rechte Seite ist im Prinzip wie eine Datenbankmodellierung. Du kannst hier neue Modelobjekte via Drag & Drop erstellen.

Modelobjekte erstellen mit Drag & Drop im Extension Builder

Ein Model ist in TYPO3 beziehungsweise Extbase:

  1. Datenbanktabelle
  2. PHP Klasse im Ordner: Classes/Model

Jede Eigenschaft eines Models entspricht:

  1. Eine Eigenschaft in der Datenbanktabelle
  2. Eine Klasseneigenschaft der Modelklasse

Der Extension Builder generiert auch diese Verzeichnisse und Dateien und sogar für jede Eigenschaft eine Get- und Set - Methode.

Es werden ebenfalls die gesamte TCA - Konfiguration für alle Models und Eigenschaften generiert. 

Das macht den Extension Builder unverzichtbar

In der Modellierung empfehle ich dir immer den erweiterten Modus zu aktivieren:

Erweiterter Modus im Extension Builder

Dieser blendet wichtige Felder in den Modelobjekte ein.

Das sind die wichtigsten Felder eines Modelobjektes

Domain object settings

  • Is aggregate root?
    • Soll eine Repository erstellt werden?
  • Map to existing table
    • Sollen die Daten in eine existierende Datenbanktabelle gespeichert werden?
  • Extend existing model class
    • Soll die PHP Klasse von diesem Model von einer anderen Klasse erben?

Properties / Relations

Die Properties sind die normalen Eigenschaften eines Models. Diese können verschiedene Datentypen annehmen. Der Extension Builder unterstützt viele, aber leider nicht alle. Manche muss man manuell in der Konfiguration vervollständigen, wie beispielsweise die Bilder.

Relationen sind Verbindungen zu anderen Modelklassen. Du kannst Relationen zu von dir erstellen Modelobjekten via Drag & Drop herstellen:

Relationen erstellen im Extension Builder

Alternativ kannst du auch Relationen zu anderen Klassen herstellen, indem du die Relation aufklappst und unten den vollständigen Klassennamen (d.h. mit Namespace Angabe) angibst:

Relation zu externen Klassen herstellen im Extension Builder

Auf dieser Weise kannst du deine Extension inklusive Modelklassen ganze einfach über eine grafische Oberfläche modellieren.
Wenn du auf speichern drückst, dann wird deine Extension in den typo3conf/ext Ordner geschrieben mit allen notwendigen Verzeichnissen und Dateien.
Wenn du ein Frontend Plugin direkt zu einem Model erstellen möchtest, dann stellst du eine Verbindung über den Namen des Models und des Schlüssels des Plugins her:

Verbindung von einem Frontend Plugin zum Model im Extension Builder herstellen

Das ist sinnvoll, wenn du die CRUD - Prozesse im Frontend haben möchtest. Im übrigen kannst du dir hier das Leben wesentlich einfacher machen, wenn du bei Default actions

Default Actions für Modelobjekte im Extension Builder

auswählst. Dann wird im Controller und in der View alle notwendigen Funktionen und Templateteile generiert. Du bekommst sogar eine funktionierende Oberfläche voll automatisiert zu Verfügung gestellt.

Du siehst, du kommst am Extension Builder nicht vorbei. Leider ist er nicht kompatibel für TYPO3 10. Meine aktuelle Empfehlung lautet daher: Kickstarte deine TYPO3 10 Erweiterung mit dem Extension Builder in einer TYPO3 9 Umgebung und übertrage diese. Danach muss du eventuelle Migrierungen von TYPO3 9 nach 10 vornehmen. Das wird jedoch vom Zeitaufwand kürzer sein, als die Erweiterung manuell zu erstellen.

Kritischer Bug in Extension Builder in der Version 9.10.2

Leider hat der Extension Builder in der Version 9.10.2 einen ziemlich hässlichen Fehler. In der ext_emcomf.php - Datei wird im Eintrag: uploadfolder kein Leerstring übergeben, sondern nichts:

Fehler in ext_emconf.php vom Extension Builder

Du kannst den Fehler ganz einfach beheben, indem du dort ein Leerstring einträgst. Erst danach kannst du die Extension installieren.