Ergebnis 1 bis 22 von 22

Thema: Erweiterung Inititalisierung, Autoload und DependencyInjection

  1. #1
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard Erweiterung Inititalisierung, Autoload und DependencyInjection

    Hi,
    ich schreibe gerade an einer Erweiterung die soweit auch funktioniert wenn ich src/Resources/contao per Symlink nach system/modules verlinke.
    Ich habe in src/Resources/contao/config eine config.php und autoload.php.
    Das Modul ist wie das Skeleton Modul aus der Doku aufgebaut. Initialisiert wird auch das BundlePluginInterface.
    Was nicht initialisiert wird sind die Files aus der obigen Config.
    Ich dachte mir dann, das dafür wohl services.yml da ist.
    in DependencyInjection liegt auch ein File drin (lt Doku aufgebaut) aber da wird nichts initialisiert. Ich habe da extra Fehler eingebaut um zu sehen ob der Code bei der Modulinitialisierung angefasst wird ... wird er leider nicht.
    Müsste DependencyInjection automatisch aufgerufen werden bei der Initialisierung oder muss ich was konfigurieren?
    Grüße
    Olli

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.112
    Partner-ID
    10107
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    ja das habe ich schon beachtet und geprüft.
    Ich entnehme aber deiner Antwort, dass das automatisch gehen muss. Also habe ich anscheinend doch noch irgendwo einen Fehler oder so.

  4. #4
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    diese Files in src/Resources/contao/config ... werden die automatisch aufgerufen?

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

    Standard

    Zitat Zitat von Honig Beitrag anzeigen
    diese Files in src/Resources/contao/config ... werden die automatisch aufgerufen?
    Solange dein Bundle geladen wird, ja.

    Poste mal einen Link zum Repository.
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Contao-Nutzer
    Registriert seit
    12.03.2010.
    Beiträge
    238

    Standard

    Das ist leider nicht öffentlich.
    Ich habe zumindest jetzt erst mal eine Richtung. Ich habe irgendwo einen Fehler. Den muss ich erst mal finden.
    Das Problem ist, die fehlenden (oder mir nicht bekannten) Debuggingmöglichkeiten.
    Gibt es irgend eine Möglichkeit heraus zu finden, welche Dateien gesucht werden während des Initialisierungsprozesses?
    Vielen Dank.

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

    Standard

    Mit
    Code:
    vendor/bin/contao-console debug:plugins "Your\ContaoManager\Plugin" --bundles
    kannst du prüfen, ob dein Contao Manager Plugin geladen ist und welche Bundles dein Contao Manager Plugin laden lässt. Das wäre mal ein erster Debug Punkt. Poste mal die Ausgabe davon (inkl. Aufruf).
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Hallo,

    ich habe leider genau das selbe Problem. Ich habe eine simple Erweiterung (analog zu https://docs.contao.org/dev/getting-started/extension/) erstellt, das nur aus einem DCA Eintrag erstellt. Leider werden im Contao Manager die DCA Informationen nicht korrekt ausgelesen. Die Komponente wird korrekt erkannt und von Contao in den Vendor Ordner gepackt.

    Wenn ich die DCA Dateien händisch in z.B. /vendor/news-bundle/contao/dca einfüge, werden sie korrekt mitgeladen und der Manager schlägt eine Migration vor. Daher gehe ich davon aus, dass meine DCA korrekt ist.

    Das Problem muss irgendwo in der Verknüpfung zwischen meinem Modul im Vendor und Contao liegen. Irgend eine Kleinigkeit fehlt noch und ich finde leider nichts dazu

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.112
    Partner-ID
    10107
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Ah, entschuldige, das hatte ich gemacht und dann doch vergessen anzuhängen.

    Ich habe hier leider einen Ionos Server mit dem ich arbeiten muss. Ich kriege leider nur folgendes (egal ob eigenes Modul oder Contao Modul)

    /usr/bin/php8.1-cli vendor/bin/contao-console debug:plugins "Matthias\AnimalsBundle" --bundles
    Code:
     [ERROR] No plugin with the class or package name "Matthias\AnimalsBundle" found.
    /usr/bin/php8.1-cli vendor/bin/contao-console debug:plugins "Contao\NewsBundle" --bundles
    Code:
     [ERROR] No plugin with the class or package name "Contao\NewsBundle" found.
    Beides im Contao Ordner ausgeführt
    Geändert von Spooky (31.08.2023 um 13:27 Uhr)

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

    Standard

    Du musst den FQCN deines Contao Manager Plugins für dieses Command nutzen. Wie sieht die composer.json deines Pakets aus?
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Code:
    {
        "name": "matthias/animals-bundle",
        "description": "Adds animals to Contao.",
        "license": "LGPL-3.0-or-later",
        "type": "contao-bundle",
        "authors": [
            {
                "name": "Matthias"
            }
        ],
        "require": {
            "contao/core-bundle": "^5.0"
        },
        "autoload": {
            "psr-4": {
                "Matthias\\AnimalsBundle\\": "src/"
            },
            "classmap": [
                "contao/"
            ],
            "exclude-from-classmap": [
                "contao/config/",
                "contao/dca/",
                "contao/languages/",
                "contao/templates/"
            ]
        },
        "config": {
            "allow-plugins": {
                "contao-components/installer": true,
                "contao/manager-plugin": true,
                "php-http/discovery": false
            }
        },
        "extra": {
            "contao-manager-plugin": "Matthias\\AnimalsBundle\\ContaoManager\\Plugin"
        }
    }
    Das mit FQCN verstehe ich nicht. Das sollte doch zumindest mit dem News Bundle funktioniert haben, oder stimmt der Name nicht wie von mir angegeben?

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

    Standard

    Zitat Zitat von Oraclefile Beitrag anzeigen
    Code:
    {
        "extra": {
            "contao-manager-plugin": "Matthias\\AnimalsBundle\\ContaoManager\\Plugin"
        }
    }
    Laut deiner composer.json heißt dein Contao Manager Plugin
    Code:
    Matthias\AnimalsBundle\ContaoManager\Plugin
    Das Command würde also bspw.
    Code:
    vendor/bin/contao-console debug:plugins "Matthias\AnimalsBundle\ContaoManager\Plugin" --bundles
    lauten.


    Zitat Zitat von Oraclefile Beitrag anzeigen
    Das mit FQCN verstehe ich nicht.
    FQCN steht für Fully Qualified Class Name, also Namespace + Klassenname. Siehe auch https://www.php.net/manual/en/langua...es.dynamic.php



    Zitat Zitat von Oraclefile Beitrag anzeigen
    Das sollte doch zumindest mit dem News Bundle funktioniert haben, oder stimmt der Name nicht wie von mir angegeben?
    Auch da hattest du nicht den FQCN des Contao Manager Plugins angegeben. Korrekt wäre bspw.
    Code:
    $ vendor/bin/contao-consoole debug:plugins "Contao\NewsBundle\ContaoManager\Plugin" --bundles
    
    Bundles Registered by Plugin "Contao\NewsBundle\ContaoManager\Plugin"
    =====================================================================
    
     ------------------------------------ ---------- ------------------------------------ ------------- 
      Bundle                               Replaces   Load After                           Environment  
     ------------------------------------ ---------- ------------------------------------ ------------- 
      Contao\NewsBundle\ContaoNewsBundle   news       Contao\CoreBundle\ContaoCoreBundle   All
     ------------------------------------ ---------- ------------------------------------ -------------
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Okay, danke. FQCN hatte ich verstanden als Abkürzung, aber wusste nicht, dass es sich auf dieses Plugin bezieht.

    Mit dem News Bundle funktioniert dieser Aufruf nun, allerdings nicht mit meinem. Da kommt weiterhin der selbe Fehler.
    Ich habe aber analog zu dem News Bundle die Plugin.php hier: /vendor/matthias/animals-bundle/src/ContaoManager/Plugin.php

    Folgendes hatte ich in dieser Datei aus dem News Modul übernommen und erfolglos abgeändert:

    Code:
    <?php
    
    declare(strict_types=1);
    
    /*
     * This file is part of Contao.
     *
     * (c) Leo Feyer
     *
     * @license LGPL-3.0-or-later
     */
    
    namespace Matthias\AnimalsBundle\ContaoManager;
    
    use Contao\CoreBundle\ContaoCoreBundle;
    use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    
    /**
     * @internal
     */
    class Plugin implements BundlePluginInterface
    {
        public function getBundles(ParserInterface $parser): array
        {
            return [
                BundleConfig::create(AnimalsBundle::class)
                ->setLoadAfter([ContaoCoreBundle::class])
                ->setReplace(['animals']),
            ];
        }
    }

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

    Standard

    Sieht korrekt aus. Wie sieht die composer.json deiner Contao Installation aus?
    » sponsor me via GitHub or PayPal or Revolut

  16. #16
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Code:
    {
        "type": "project",
        "require": {
            "contao/conflicts": "*@dev",
            "contao/manager-bundle": "5.0.*",
            "contao/calendar-bundle": "5.0.*",
            "contao/comments-bundle": "5.0.*",
            "contao/faq-bundle": "5.0.*",
            "contao/listing-bundle": "5.0.*",
            "contao/news-bundle": "5.0.*",
            "contao/newsletter-bundle": "5.0.*",
            "matthias/animals-bundle": "dev-main"
        },
        "extra": {
            "public-dir": "public",
            "contao-component-dir": "assets"
        },
        "scripts": {
            "post-install-cmd": [
                "@php vendor/bin/contao-setup"
            ],
            "post-update-cmd": [
                "@php vendor/bin/contao-setup"
            ]
        },
        "repositories": [
            {
                "type": "path",
                "url": "./custom-modules/matthias/animals-bundle"
            }
        ]
    }
    Der custom modules path scheint wie gesagt korrekt zu sein, da er das dann in vendor kopiert (gelinkt) hat

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

    Standard

    Hattest du nach anlegen des Contao Manager Plugins auch nochmal composer update ausgeführt?
    » sponsor me via GitHub or PayPal or Revolut

  18. #18
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Langsam habe ich das Gefühl dass es was mit Ionos zu tun haben könnte.

    Ich mache alles über den Contao manager, aber ich habe jetzt noch mal den vendor Ordner gelöscht und er linkt es erneut:
    Code:
     - Installing matthias/animals-bundle (dev-main): Symlinking from ./custom-modules/matthias/animals-bundle
    Dann habe ich es doch noch mal in der Konsole probiert und dort fehlt mein Modul:

    Code:
     Trying to install assets as relative symbolic links.
    
     --- ------------------------ ------------------
          Bundle                   Method / Error
     --- ------------------------ ------------------
      ?   ContaoCoreBundle         relative symlink
      ?   ContaoFaqBundle          relative symlink
      ?   ContaoCommentsBundle     relative symlink
      ?   ContaoNewsBundle         relative symlink
      ?   ContaoCalendarBundle     relative symlink
      ?   ContaoNewsletterBundle   relative symlink
     --- ------------------------ ------------------

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

    Standard

    Zitat Zitat von Oraclefile Beitrag anzeigen
    Langsam habe ich das Gefühl dass es was mit Ionos zu tun haben könnte.
    Ich denke nicht.

    Ist der Code deiner Extension öffentlich einsehbar?
    » sponsor me via GitHub or PayPal or Revolut

  20. #20
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Ich wollte es dir gerade zuschicken und vorher noch unnötige Dateien loswerden, da ich es wie gesagt einfach vom News modul kopiert hatte und habe es damit noch mal aufgesetzt und jetzt geht es. Also hatte ich vermutlich noch irgendwelche Dateien die das gestört haben oder so. Ich versuche die Ursache rauszufinden und melde mich dann noch mal

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

    Standard

    Ich würde empfehlen nie Copy & Paste zu nutzen - sondern Schritt für Schritt das anlegen, was notwendig ist.
    » sponsor me via GitHub or PayPal or Revolut

  22. #22
    Contao-Nutzer
    Registriert seit
    09.08.2012.
    Beiträge
    28

    Standard

    Ja, da hast du wohl recht. Selbst wenn man eine sehr ähnliche Funktionalität hat, sollte man sich eher daran orientieren und nicht blind alles kopieren.

    Du hast mir aber erst mal sehr geholfen. Das Verständnis ist nun auch wieder gestiegen.

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
  •