Background Decoration

CONTAO 5 BUNDLE GENERATOR

Generiere die komplette Boilerplate-Struktur für ein neues Contao 5 Bundle. Vendor, Namespace, ContaoManager-Plugin und Service-Konfiguration — alles in Sekunden.

1. Vendor & Bundle Name

Namespace: Webinteger

Klasse: BeachsideBundle

2. Contao Version

Unterschied: Contao 5.7 nutzt Symfonys loadExtension() direkt im Bundle — die separate DependencyInjection/Extension.php entfällt komplett. Services werden über den ContainerConfigurator statt dem klassischen YamlFileLoader importiert.

3. Optionale Dateien

Migration KlasseGeneriert eine leere Contao-Migration-Klasse für Datenbankänderungen.
contao.yaml KonfigurationGeneriert eine Contao-spezifische Konfigurationsdatei für Backend-Module & Co.

Namespace-Vorschau

Composer:webinteger/beachsidebundle
PSR-4:Webinteger\BeachsideBundle\
Plugin:Webinteger\BeachsideBundle\ContaoManager\Plugin

Verzeichnisstruktur

📄composer.json
📁config/
📄services.yaml
📁src/
📄BeachsideBundle.php
📁ContaoManager/
📄Plugin.php
webinteger/beachsidebundle/composer.json
{
  "name": "webinteger/beachsidebundle",
  "type": "contao-bundle",
  "description": "A custom Contao 5 bundle.",
  "license": "MIT",
  "authors": [
    {
      "name": "Webinteger",
      "homepage": "https://github.com/webinteger"
    }
  ],
  "require": {
    "php": ">=8.3",
    "contao/core-bundle": "^5.7",
    "symfony/framework-bundle": "^7.4"
  },
  "autoload": {
    "psr-4": {
      "Webinteger\\BeachsideBundle\\": "src/"
    }
  },
  "extra": {
    "contao-manager-plugin": "Webinteger\\BeachsideBundle\\ContaoManager\\Plugin"
  }
}

Häufige Fragen zur Contao 5 Bundle-Entwicklung

Was ist ein Contao Manager Plugin und warum brauche ich es?

Der Contao Manager lädt Bundles nicht über die Symfony-Kernel-Konfiguration, sondern über ein eigenes Plugin-System. Die Klasse ContaoManager\Plugin implementiert das BundlePluginInterface und registriert dein Bundle so, dass es automatisch nach dem CoreBundle geladen wird. Ohne dieses Plugin erkennt der Contao Manager dein Bundle nicht.

Was ist der Unterschied zwischen Contao 5.3 und 5.7 bei der Bundle-Entwicklung?

Der größte Unterschied liegt in der Service-Registrierung: Contao 5.3 basiert auf Symfony 6.4 und benötigt eine separate DependencyInjection/Extension.php Klasse mit einem YamlFileLoader, um die services.yaml zu laden. Contao 5.7 nutzt Symfony 7.4, wo die loadExtension() Methode direkt im Bundle definiert wird. Der ContainerConfigurator importiert Services über $container->import(). Das reduziert die Boilerplate um eine komplette Datei und einen ganzen Ordner. Zudem erfordert 5.7 mindestens PHP 8.3.

Wie funktioniert PSR-4 Autoloading im Contao Bundle?

Die composer.json definiert unter autoload.psr-4 ein Mapping von deinem PHP-Namespace auf den src/ Ordner. Composer erzeugt daraus beim dump-autoload eine Classmap. Achte darauf, dass dein Namespace exakt zur Verzeichnisstruktur passt.

Welche Contao 5 LTS-Version sollte ich wählen?

Contao 5.3 LTS (Symfony 6.4, PHP 8.1+) ist die sichere Wahl für maximale Abwärtskompatibilität und den breitesten Hosting-Support. Contao 5.7 LTS (Symfony 7.4, PHP 8.3+) ist die modernere Variante mit schlankerer Bundle-Struktur und gilt als strategische Brücke zu Contao 6. Für neue Projekte empfehlen wir 5.7, für bestehende Installationen mit älterem PHP-Stack ist 5.3 die richtige Wahl.

Wie teste ich mein Bundle lokal in einer Contao-Installation?

Nutze den repositories Key in der composer.json deiner Contao-Installation, um auf dein lokales Bundle als path Repository zu verweisen. Dann führe composer require vendor/bundle:@dev aus. Composer verlinkt das Verzeichnis symbolisch und du kannst Änderungen in Echtzeit testen.

Wann brauche ich eine Contao Migration?

Migrationen werden benötigt, wenn dein Bundle Datenbankschema-Änderungen durchführen muss, die über die reguläre DCA-Definition hinausgehen. Dazu zählen das Umbenennen von Spalten, das Migrieren bestehender Daten oder das Erstellen komplexer Indizes. Die Migration-Klasse implementiert shouldRun() um zu prüfen, ob die Migration nötig ist, und run() um sie auszuführen.

Nächste Schritte & Kontakt

Dein Webprojekt professionell umsetzen?

Du brauchst professionelle Unterstützung bei deinem Web-Projekt? Wir helfen dir bei der Umsetzung von modernen Layouts, performanten Animationen und maßgeschneiderten Lösungen, damit dein Projekt wirklich glänzt.

Webinteger kontaktieren

Sende uns deine Testergebnisse direkt zu. Wir analysieren dein Projekt im Detail und erstellen dir einen Fahrplan zur Behebung.

Beratung anfragen

Nächster Test: CSS Snippet Generator

Nimm deine URL mit zum nächsten Tool, um deine SEO-Analyse zu vervollständigen und weitere versteckte Fehler aufzudecken.

URL zu CSS Snippet Generator übertragen