Contao 4 Erweiterung als Symfony-Bundle (gelöst)
Hallo zusammen,
inzwischen kann man ja einiges lesen zu Contao 4 und wie man Erweiterungen als Symfony-Bundles erstellt:
https://xuad.net/artikel/contao-4-bu...d-und-frontend
http://easysolutionsit.de/artikel/co...ls-bundle.html
https://blog.daniel-kiesel.de/blog-d...tml?_locale=de
(vielen Dank dafür!)
Ich fand auch den Beitrag auf dem Contao-Nordtag von Christian Schiffler sehr gut gemacht und er hat mich echt weiter gebracht:
https://www.youtube.com/watch?v=34R7buoM_cc
https://www.cyberspectrum.de/files/d...on_cnt2017.pdf
Nun habe ich aber eine Frage:
zum generellen Anlegen/Erstellen des Bundles und dessen Verortung bzw. Verzeichnisstruktur innerhalb einer Contao-Instanz.
Wenn ich das richtig verstehe wird ein selbst entwickeltes Bundle in Contao 4 unter /src/ abgelegt. Also parallel zum Ordner /web/, /app/, /files/ usw.
Also quasi wie im Beispiel hier genannt. Das habe ich gemacht und auch mein Bundle in der AppKernel.php registriert. Aber das funktioniert nicht ohne in der composer.json im Root dem autoload das Verzeichnis bekannt zu machen:
Code:
"autoload": {
"psr-4": { "": "src/" },
},
Jetzt wird das Bundle anscheinend ohne Fehler geladen.
Muss ich das immer so machen, die composer.json im Root manuell anpassen?
Wenn ich mir mal Bundles wie z. B. Contao-eigene Calendar Bundle anschaue, dann fällt mir auf dass hier eine eigene composer.json existiert, welche ich ja nicht in meine Contao-Instanz einfach lege. Da würde ich die Eigentliche ja überschreiben. Daher lade ich es via composer require. Dazu muss es aber über composer zu laden sein -> https://packagist.org/
Also was ist eurer Meinung nach der "Best Practice" um ein Contao-Bundle zu erstellen?
Wie könnte ich vorgehen, wenn ich mir kein öffentliches Repository anlegen kann, aber dennoch das Bundle über Composer Contao hinzufügen möchte sodass es auch im /vendor/ Ordner landet und man nicht die composer.json im Root manuell anpacken muss?
Grüße
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Screenshot:
Anhang 19385
In dem Fall gehe ich ja hin und installiere das Bundle per:
Code:
composer require foobar/foobar-bundle
ME Bundle manuell einbinden
Hello,
sorry für die evtl. schon gestellte oder doofe Frage. Aber wie könnte ich jetzt in der ME ein erstelltes Bundle einbinden?
Meine Struktur sieht folgendermaßen aus
HTML-Code:
[Contao:ROOT]/vendor/[MyVendor] -> ../_external/[MyVendor]
[Contao:ROOT]/_external/[MyVendor]/[MyBundle]
|---- /composer.json
|---- /src/
|---- /src/[...]
Meine composer.json sieht folgendermaßen aus:
HTML-Code:
{
"name": "[MyVendor]/[MyBundle]",
"type": "contao-bundle",
"description": "[...]",
"keywords": [...],
"homepage": "[...]",
"license": "LGPL-3.0-or-later",
"authors": [
{
[...]
}
],
"support": {
"email": "[E-Mail]"
},
"require": {
"php":">=7.0",
"contao/core-bundle": "^4.0"
},
"require-dev": {
"php":">=7.0",
"contao/core-bundle": "^4.0"
},
"autoload": {
"psr-4": {
"[MyVendor]\\[MyBundle]\\": "src/"
},
"classmap": [
"src/Resources/contao/"
],
"exclude-from-classmap": [
"src/Resources/contao/config/",
"src/Resources/contao/dca/",
"src/Resources/contao/languages/",
"src/Resources/contao/templates/"
]
},
"extra":{
"contao-manager-plugin": "[MyVendor]\\[MyBundle]\\ContaoManager\\Plugin"
}
}
Vielen Dank für die Hilfe und evtl. sorry für doof :rolleyes:
Lukas