Contao-News

Wir informieren Dich hier regelmäßig zu Updates, stellen Best-Practice-Arbeiten vor und berichten über Aktuelles aus dem Contaoversum.

Release der Contao Managed Edition

von Yanick Witschi – Aktuelles

Die Contao Managed Edition bildet die Grundlage für den im Blogpost zum Contao Manager erwähnten Betriebsmodus "Contao-Applikation".

Wichtig: Hierbei geht es noch nicht um die grafische Oberfläche unter dem Namen Contao Manager, sondern um deren technisch notwendigen Unterbau. Ohne diesen wäre eine grafische Oberfläche erst gar nicht möglich.

Die grafische Oberfläche, also der Contao Manager, soll spätestens mit Contao 4.4 LTS zur Konferenz im Juni 2017 veröffentlicht werden.

Nachteile einer regulären Symfony-Applikation

Die Hauptproblematik bei einer regulären Symfony-Applikation liegt in der manuellen, expliziten Konfiguration der Applikation. Möchte man ein neues Bundle bzw. eine Erweiterung installieren, muss man sie nach der Installation mit Composer der Applikation bekannt machen, die Konfiguration anpassen, evtl. Routen registrieren und sicherstellen, dass ihre Abhängigkeiten der Applikation ebenfalls bekannt gemacht werden und in der richtigen Reihenfolge geladen werden etc..

Selbstverständlich kann das aus Entwicklersicht auch als grosser Vorteil gewertet werden, weil die Applikation eben nichts tut, was man nicht explizit wünscht. Allerdings sorgt das auch für viel Aufwand beim Update von Bundles. Die gesamte Konfiguration muss erneut geprüft werden, da vielleicht neue Features hinzugekommen sind, welche konfiguriert werden wollen – selbst wenn man mit den Default-Einstellungen womöglich ganz zufrieden wäre.

Für die Entwickler unter den Lesern sei an dieser Stelle erwähnt, dass Symfony selbst diese Problematik ebenfalls angeht und Fabien Potencier (der Symfony-Projektlead) auf der SymfonyCon in Berlin Symfony Flex angekündigt hat. Wir werden sehen wohin uns das führt.

Die Contao Manager Plugins

Die Contao Managed Edition wurde entwickelt, um die oben genannten Abläufe zu automatisieren. Entwickler von Bundles können durch ein sogenanntes Manager-Plugin definieren, wie sich ihr Bundle innerhalb einer Managed Edition verhalten soll. Das bedeutet, dass es sich im Rahmen einer regulären Symfony-Applikation verhält wie immer, aber für die Managed Edition mit Zusatzinformationen ausgestattet wird.

Im Wesentlichen definiert der Entwickler in seiner composer.json den Pfad zu seiner Plugin-Klasse (kann an einem beliebigen Ort liegen) und darin das Verhalten seines Bundles. Kurzbeispiel:

composer.json

"extra": {
    "contao-manager-plugin": "Vendor\\MyBundle\\ContaoManager\\Plugin"
}

Plugin.php

class Plugin implements RoutingPluginInterface
{
    /**
     * {@inheritdoc}
     */
    public function getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel)
    {
        return $resolver
            ->resolve(__DIR__.'/../Resources/config/routing.yml')
            ->load(__DIR__.'/../Resources/config/routing.yml')
        ;
    }
}

Für geübte Leser ist es unschwer zu erkennen, dass dieses Plugin in der Umgebung einer Managed Edition selber Routen registrieren wird.

Es erschien uns wichtig, an dieser Stelle ein Beispiel zu erwähnen, damit die Entwickler sich beim Lesen dieses Beitrags sofort etwas darunter vorstellen können. Die vollständige Dokumentation zur Managed Edition sowie zu den Möglichkeiten des Plugins findet ihr unter docs.contao.org. Pull-Requests zur Erweiterung der Dokumentation sind herzlich willkommen!

Die Contao Managed Edition

Die Installation der Contao Managed Edition erfolgt mit einem simplen Command:

$ composer create-project --no-dev contao/managed-edition .

Alternativ kann die Managed Edition auch als ZIP-Datei auf contao.org heruntergeladen werden. Weitere Informationen werden in einem separaten News-Beitrag nachgereicht.

Die Contao-Bundles sind allesamt bereits mit entsprechenden Plugins ausgestattet, so dass sie sich automatisch konfigurieren. Die Contao Managed Edition übernimmt danach unter anderem folgende Aufgaben für den Anwender:

  • Generiert automatisch den Entrypoint (app.php).
  • Bringt einen eigenen Kernel, der die Bundles automatisch in der richtigen Reihenfolge lädt.
  • Lädt die Bundle-Konfiguration automatisch, unterstützt aber immer noch eine applikationsspezifische Konfiguration via app/config/config.yml falls gewünscht.
  • Automatischer BC-Layer für Contao 3.5 Erweiterungen (z.B. automatischer Support für die autoload.ini für die Ladereihenfolge).
  • u.v.m.

Ein Update der gemanagten Bundles sollte in Zukunft folglich ein Leichtes sein, da sie die neue Konfiguration ja bereits mitliefern.

Übrigens: Sollte die lokale Applikation ein reguläres Symfony-Bundle benötigen, das dementsprechend über kein Plugin verfügt, kann es durch ein globales Plugin (globaler Namespace \ContaoManagerPlugin) für die eigene Applikation mit der notwendigen Funktionalität ausgestattet werden. Weitere Informationen dazu lassen sich ebenfalls in der Dokumentation finden.

Release

Das alles ist ab sofort verfügbar! Feedback dazu bitte wie immer auf GitHub.

Für die Entwickler von Bundles (Erweiterungen) für Contao gilt es also, so viele Bundles wie möglich mit dem Plugin auszustatten, damit sie innerhalb der Contao Managed Edition verwendet werden können und somit in naher Zukunft von unseren Anwendern auch via der GUI, dem Contao Manager, installiert werden können.

An dieser Stelle erneut den Hinweis auf docs.contao.org und die Tatsache, dass die Dokumentation nur so gut ist, wie der Beitrag eines jeden einzelnen.

Allen Nicht-Entwicklern sei gesagt: Der Weg ist steinig und wir wissen, dass wir eure Geduld auf die Folter spannen. Übrigens, die Contao Managed Edition ist das Resultat unzähliger Telefonkonferenzen aber auch unserer regelmässigen Entwicklertreffen, die grösstenteils von der Contao Association finanziert werden, bei der jedes neue Mitglied natürlich herzlich willkommen ist.

Alle News anzeigen

Kommentare

Einen Kommentar schreiben

Bitte addieren Sie 7 und 7.