/contao-bundle-creator-bundle

Contao Bundle Maker/Boilerplate

Primary LanguagePHPMIT LicenseMIT

Marko Cupic

Contao Bundle Creator (Boilerplate für eigene Erweiterungen)

Das Modul ist für Entwickler gedacht, und generiert nach Eingabe einiger Parameter ein Grundgerüst (Boilerplate/Skeleton) für ein Contao 4 Bundle.

Es können...

  • ein Frontendmodul generiert werden.
  • ein Backendmodul generiert werden.
  • ein Inhaltselement generiert werden.
  • eine custom route (https://myhostname.ch/my_custom) generiert werden.
  • eine custom session bag generiert werden.
  • eine Basisklasse (mit custom root key) für eine friendly configuration generiert werden.

Alle nötigen Konfigurationsdaten werden automatisch erstellt.

Falls gewünscht, werden auch die für den Betrieb nötigen Einstellungen in der root composer.json automatisch getätigt. Nach der Generierung ist es lediglich nötig,

  • im Contao Manager einen Updatedurchlauf zu starten und mit dem Installtool die Datenbank upzudaten
  • oder per Konsole den php composer update und php vendor/bin/contao-console contao:migrate Befehl auszuführen

Via Contao Backend das Bundle konfigurieren

Alt text

Verzeichnisstruktur

Folgende Verzeichnisstruktur (ohne Resources Verzeichnis) wird im vendor Ordner angelegt.

Alt text

Inbetriebnahme des Bundles

Nachdem alle Eingaben im Backend gemacht wurden, das Bundle ganz einfach per Knopfdruck generieren lassen. Die Extension sollte nun im Verzeichnis "vendor" erstellt worden sein und kann auch als ZIP-File heruntergeladen werden.

Variante A (Auch ohne eigenen github-Account möglich)

In der composer.json folgende 2 Einträge machen:

"repositories": [
    {
      "type": "path",
      "url": "/home/myhosting/public_html/dirtyharryproductions.com/vendor/dirtyharrycoding/hello-world-bundle"
    }
  ],

In der composer.json den absoluten Pfad zum Bundle im vendor-Verzeichnis angeben. Dieser Schritt kann, wenn so eingestellt, von der Erweiterung auch automatisch erledigt werden.

  "require": {
    ....
    ....
    "dirtyharrycoding/hello-world-bundle": "dev-main"
  },

Im require-Teil das neu erstellte Bundle registrieren. Dieser Schritt kann, wenn so eingestellt, von der Erweiterung auch automatisch erledigt werden.

Danach via Contao Manager ein vollständiges Update durchführen und das Installtool aufrufen. Fertig!


Variante B

Die Erweiterung auf github.com hochladen und in der composer.json folgende 2 Einträge machen.

"repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/dirtyharrycoding/hello-world-bundle"
    }
  ],

In der composer.json den Pfad zum github repo angeben.

  "require": {
    ....
    ....
    "dirtyharrycoding/hello-world-bundle": "dev-main"
  },

Im require-Teil das neu erstellte Bundle registrieren.

Danach via Contao Manager ein vollständige Update durchführen und das Installtool aufrufen. Fertig!

Bei Variante B kann es sein, dass github.com die Verbindungsanfrage ablehnt. Die Erstellung eines Oauth-Access-Tokens kann hier Abhilfe schaffen. Das Access Token muss dann in der config section der composer.json im Root eingesetzt werden. Github Oauth-Access-Token generieren

   "config": {
     "github-oauth": {
       "github.com": "43dfdfxxxxxxxxxxxxxxxxxxx5645rtzrfhgfe9"
     }
   },

Variante C

Die Erweiterung im Backend via "Bundle herunterladen" Button downloaden und dann im Contao Manager als Paket importieren. Installtool aufrufen. Fertig!


Variante D

Die Erweiterung via github auf packagist.org hochladen und dann via Contao Manager installieren. Installtool aufrufen. Fertig!

Anmerkungen

  • Falls man in den Einstellungen definiert, dass das Skript während der Erstellung des Bundles auch die die root composer.json anpasst, speichert das Skript zur Sicherheit ein Backup der composer.json in system/tmp ab.
  • Bei der Erstellung des Bundles wird im Verzeichnis system/tmp zusätzlich ein zip-package mit dem generierten Bundle abgelegt. Das Package kann per Knopfdruck heruntergeladen werden.

Templates updatesicher anpassen

Falls man die Standard-Templates anpassen möchte, die der bundle-maker benötigt, um die PHP-Klassen, Konfigurationsdateien, etc. zu generieren, kann man seine eigene Templates im Verzeichnis templates/contao-bundle-creator-bundle/skeleton ablegen.

Templates updatesicher überschreiben

Codefixing mit easy-coding-standard

Auf Wunsch lässt sich "contao/easy-coding-standard" als Abhängigkeit installieren. Bei der Installation werden die Konfigurationsdateien im "vendor/my-custom-bundle/tools/ecs" abgelegt. Der Fixer kann nun so über das Terminal aufgerufen werden:

Unter Windows (Backslashes als directory separator verwenden):

# /src fixer
php vendor\bin\ecs check vendor/markocupic/contao-bundle-creator-bundle/src --fix --config vendor/markocupic/contao-bundle-creator-bundle/tools/ecs/config.php

# /contao
php vendor\bin\ecs check vendor/markocupic/contao-bundle-creator-bundle/contao --fix --config vendor/markocupic/contao-bundle-creator-bundle/tools/ecs/config.php

# /config
php vendor\bin\ecs check vendor/markocupic/contao-bundle-creator-bundle/config --fix --config vendor/markocupic/contao-bundle-creator-bundle/tools/ecs/config.php

# /templates
php vendor\bin\ecs check vendor/markocupic/contao-bundle-creator-bundle/templates --fix --config vendor/markocupic/contao-bundle-creator-bundle/tools/ecs/config.php

# tests
php vendor\bin\ecs check vendor/markocupic/contao-bundle-creator-bundle/tests --fix --config vendor/markocupic/contao-bundle-creator-bundle/tools/ecs/config.php

easy-coding-standard

App erweitern

Die Bundle-Dateien werden in dieser App über sogenannte "Maker" dem neu zu erstellenden Bundle hinzugefügt. Mit EventSubscribern können weitere Maker-Klassen hinzugefügt werden. Dazu muss lediglich eine EventSubscriberklasse angelegt werden.

Last but not least

Der Anwender sollte wissen, was er tut ;-)

Im dümmsten Fall überschreibt man bereits bestehende Erweiterungen und beschädigt so die Installation.