Ergebnis 1 bis 16 von 16

Thema: ContaoManager\Plugin in system/modules/MyBundle

  1. #1
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard ContaoManager\Plugin in system/modules/MyBundle

    Hallo Community,

    ich bin neu in Contao und hier, darum kurz zu mir. Ich bin freiberuflicher PHP Entwickler, meine Muttersprache ist Java und das Zend Framework 2 ist seit Langem mit mir. Mit Symfony habe ich ein paar Gehversuche erfolgreich abgeschlossen.

    Zum Lernen schreibe ich ein Contao Bundle unter /system/modules was in der managed Edition auch geladen wird.
    https://bitbucket.org/bitkorn/isitafubundle

    Um die routing.yml in Resources/config zu laden soll es die Klasse ContaoManager/Plugin und darin die Funktion getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel) verwenden.

    Die composer.json im Bundle Ordner wird bei einem "composer update" nicht mit ein bezogen. Da habe ich, darum unnütz, "contao-manager-plugin": "Bitkorn\\Isitafu\\ContaoManager\\Plugin".
    Dieses in der Compose.json im Contao Root Verzeichnis ein zu tragen macht denke ich wenig Sinn ...was wäre wenn ein zweites Bundle in /system/modules dazu kommt?!?!

    Wie bringe ich Contao 4.4.x managed dazu meine Klasse ContaoManager/Plugin zu verwenden?

    Torsten

  2. #2
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539
    Grüße
    Alex

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Zitat Zitat von allapow Beitrag anzeigen
    Wie bringe ich Contao 4.4.x managed dazu meine Klasse ContaoManager/Plugin zu verwenden?
    Genau so wie du es schon getan hast: mit dem extra.contao-manager-plugin Eintrag in der composer.json.

    Versuche aber lieber mal folgendes in deinem Plugin:
    PHP-Code:
        /**
         * {@inheritdoc}
         */
        
    public function getRouteCollection(LoaderResolverInterface $resolverKernelInterface $kernel)
        {
            return 
    $resolver
                
    ->resolve(__DIR__.'/Resources/config/routing.yml')
                ->
    load(__DIR__.'/Resources/config/routing.yml')
            ;
        } 

  4. #4
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard

    Habe das "contao-manager-plugin": "Bitkorn\\Isitafu\\ContaoManager\\Plugin" jetzt auch in die Contao composer.json gepackt und ein composer update gemacht, ohne Efffekt. Die Funktion getRouteCollection() in meiner Plugin Klasse wird definitiv nicht aufgerufen!

    ...und weil ich mein Bundle ja nicht mit composer require installiere kann ich meine composer.json im Bundle theoretisch auch weg lassen.

    Gibt es vielleicht einen anderen Weg in einem, nicht mit Composer installiertem, Bundle die routing.yml zur Verwendung zu bringen?

  5. #5
    Contao-Nutzer
    Registriert seit
    23.08.2013.
    Beiträge
    87

    Standard

    Was meinst du mit nicht mit Composer installierten Bundle? Das einzige was in die Root composer.json muss ist ein require auf dein Bundle.

    Für das Routing, prüfe: Wird dein Bundle geladen? Wird das Manager Plugin geladen? Implementierst du das Routing Interface? Lädst du die richtige Routing config?

    Denk auch daran den app_dev.php Einstiegspunkt zu nutzen (oder sei dir bewusst wann du den Cache leeren musst) und ggf. ein dump-autoload auszuführen, falls du Autoloader Optimization benutzt und gelinkte Pfade veränderst.

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Zitat Zitat von allapow Beitrag anzeigen
    Habe das "contao-manager-plugin": "Bitkorn\\Isitafu\\ContaoManager\\Plugin" jetzt auch in die Contao composer.json gepackt und ein composer update gemacht, ohne Efffekt.
    Das gehört in die composer.json deines Bundles, nicht in die root composer.json.


    Zitat Zitat von allapow Beitrag anzeigen
    ...und weil ich mein Bundle ja nicht mit composer require installiere
    Wie sonst? Anders geht es nicht.

  7. #7
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard

    Vielleicht war ich ganz oben nicht deutlich. Ich schreibe ein Bundle, habe es nicht fertig oder möchte ein fertiges installieren.

    Weil ich mein Bundle nicht mit Composer installiere mache ich unter "require" keinen Eintrag. Wenn ich das täte (mittels "composer require" installieren), werden meine Sourcen nach vendor kopiert. Folgende Änderungen in /system/modules, während der Entwicklung, würden nicht berücksichtigt. Ich müsste nach jeder Änderung und vor jedem test-request alles nach /vendor kopieren, bzw. ein composer update inkl. Versionssprung machen.

    Ja, Bundle wird geladen!

    Nein, ContaoManager\Plugin wird nicht geladen!

    Ja, ich nutze app_dev.php (habs meiner IDE gesagt).

    In meine Bundle composer.json kann ich auch xyz({})__Rumpelstielzchen schreiben, es interessiert Composer nicht. Grund ist, dass ich das Bundle nicht mit Composer installiere weil ich am Entwickeln dran bin

    In der Contao composer.json habe ich folgendes drin:

    "autoload": {
    "classmap": [
    "app/ContaoManagerPlugin.php"
    ],
    "psr-4": {
    "Bitkorn\\Isitafu\": "system/modules/isitafu-bundle"
    }
    }

    Und das muss auch beides drin sein. Dadurch wird das Bundle geladen. Der Beweis ist ein funktionierendes und im Backend vorhandenes ContentElement.

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Zitat Zitat von allapow Beitrag anzeigen
    Weil ich mein Bundle nicht mit Composer installiere mache ich unter "require" keinen Eintrag.
    Das geht so nicht. Die extra.contao-manager-plugin wird nur in der composer.json des Bundle berücksichtigt, nicht in der composer.json des Root.

    Du hast zwei Möglichkeiten:

    Per Symlink arbeiten

    Dazu machst du zB folgenden Eintrag in deiner compser.json:
    Code:
    {
        "repositories": [
            {
                "type": "path",
                "url": "/absolute/path/to/your/bundle"
            }
        ]
    }
    Und dann:
    Code:
    {
        "require": {
            "your/bundle": "dev-master"
        }
    }
    Nachteil dieser Variante ist, dass man zumindest unter Windows ein wenig eingeschränkt ist, siehe https://github.com/contao/core-bundle/issues/1114


    Per Sources arbeiten

    In dieser Variante machst du das grundsätzliche composer.json Setup deines Bundles und fügst es dann in ein Version Control System Repository ein. Nun musst du in der Root composer.json deiner Contao Installation mehrere Dinge machen:

    preferred-install konfigurieren:
    Code:
    {
        "config": {
            "preferred-install": {
                "your/bundle": "source"
            }
        }
    }
    Pfad zum Repository angeben:
    Code:
    {
        "repositories": [
            {
                "type": "vcs",
                "url": "/absolute/path/to/your/bundle"
            }
        ]
    }
    oder
    Code:
    {
        "repositories": [
            {
                "type": "vcs",
                "url": "https://example.com/your/bundle.git"
            }
        ]
    }
    Bundle requiren:
    Code:
    {
        "require": {
            "your/bundle": "dev-master"
        }
    }

    Nach einem composer update checkt composer in dieser Variante den source aus dem Repository aus. Du könntest dann auch direkt im vendor/your/bundle Ordner committen und pushen. Nachteil dieser Variante ist, dass Änderungen in der composer.json nicht direkt von composer erkannt werden. Wie man damit am besten umgeht weiß ich auch noch nicht.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Oder möchtest du nur ein lokales Bundle verwenden, also eins, dass du nur in genau einer Contao Installation verwendest? Dann ist die Vorgehensweise, unter Verwendung des "AppBundle" hier grob beschrieben: https://community.contao.org/de/show...l=1#post440081

    Wichtig ist dabei, dass du dein Bundle über eine ContaoManagerPlugin Klasse laden musst, die sich im Root Namespace befindet.

  10. #10
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard

    Die Sache mit "Per Symlink arbeiten" ist super und funktioniert. Ich arbeite nur mit Linux

    Wichtig auch, dass man "dev-master" angibt, n Asterisk tuts da nich.

  11. #11
    Contao-Nutzer
    Registriert seit
    23.08.2013.
    Beiträge
    87

    Standard

    Und wozu entwickelst du überhaupt im system/modules Ordner? Das ist die Legacy Modulstruktur und hat mit Symfony Bundles nichts gemein.

  12. #12
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard

    weil ich es in einer Doku gelesen habe. Frage mich nicht in welchem, spärlich über das Netz verteiltem, Schnipsel ich das gelesen habe

    Ja, Symfony Bundles entwickelt man wohl in /src. Und vielleicht habe ich in einer Doku auch nur etwas falsch verstanden. Ich finde es aber auch ehrlich nicht einfach sich das Wissen über Contao anzueignen. Ich bin verwöhnter Java und Zend Framework Entwickler

  13. #13
    Contao-Nutzer
    Registriert seit
    23.08.2013.
    Beiträge
    87

    Standard

    True. Schau dir am besten an, wie andere Erweiterungen oder die Contao Bundles das machen. Das ist die derzeit beste Referenz. Symfony ist außerdem sehr gut dokumentiert und Contao ist nichts weiter als eine konfiguriere Sammlung an Bundles - die Symfony best practices lassen sich fast alle anwenden.

  14. #14
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard

    Ist jetzt off topic.
    Auf der Contao Seite für Erweiterungen scheints nichts für 4.x zu geben. Zumindest gibts da kein Filter für. Und sortiert man nach Freigabedatum, könnt man denken, dass es nicht eine Erweiterung für 4.x dort gibt.
    Also suche ich bei GitHub:
    https://github.com/Sioweb/Contao4DummyBundle
    https://github.com/BugBuster1701/contao-xing-bundle

    Hast du Empfehlungen für gut gemachte Erweiterungen die einen nicht mit Funktionalität erschlagen?

  15. #15
    AG Pressearbeit
    Community-Moderator
    Buchautor 'Contao für Webdesigner'
    Avatar von planepix
    Registriert seit
    05.06.2009.
    Ort
    Stuttgart
    Beiträge
    6.468
    Partner-ID
    107
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von allapow Beitrag anzeigen
    Ist jetzt off topic.
    Auf der Contao Seite für Erweiterungen scheints nichts für 4.x zu geben. Zumindest gibts da kein Filter für. Und sortiert man nach Freigabedatum, könnt man denken, dass es nicht eine Erweiterung für 4.x dort gibt.
    Also suche ich bei GitHub:
    https://github.com/Sioweb/Contao4DummyBundle
    https://github.com/BugBuster1701/contao-xing-bundle

    Hast du Empfehlungen für gut gemachte Erweiterungen die einen nicht mit Funktionalität erschlagen?
    Das ER für Contao 4 nennt sich Packagist -> packagist.org

    Und das ist auch hilfreich:
    https://libraries.io/search?q=contao...e_published_at

    Gesendet von iPhone mit Tapatalk
    Geändert von planepix (06.05.2018 um 20:53 Uhr)
    ---------------------------------
    Beste Grüße planepix
    Contao für Webdesigner (Website), Twitter: @contaowebdesign
    weitzeldesign
    Contao-Sprechstunde
    Contao Schulungen: https://www.weitzeldesign.com/cms-co...chulungen.html
    Contao Jahrbuch: www.contao-jahrbuch.de
    Contao Agenturtag: www.contao-agenturtag.de
    Contao Stammtisch Stuttgart: www.contao-stammtisch-stuttgart.de
    Contao 4 Erfahrungen als Gitbook: https://app.gitbook.com/@planepix/s/...-mit-contao-4/
    Contao 4 & Manager Hosterhinweise: https://github.com/contao/contao-manager/wiki

    Schon wieder ein Update?
    Glücklich sind die, die den Wert erkennen – und wertschätzen.
    „Muss man machen wie beim Zahnarzt. Der bestraft einen auch mit hohen Rechnungen wenn man die Pflege vernachlässigt.”

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •