Ergebnis 1 bis 16 von 16

Thema: eigene Controller, die Core-Module extenden - Portierung von 4.13 auf 5.3

  1. #1
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard eigene Controller, die Core-Module extenden - Portierung von 4.13 auf 5.3

    Hallo,
    gibt es unter C5 nicht mehr die Möglichkeit, 'alte' Contao Mudule (legacy-Klassen?) zu extenden?

    So wie hier
    https://docs.contao.org/dev/guides/f...existing-class

    ging es in 4.13 noch - unter 5.x nicht mehr? (Keine Fehlermeldung, keinerlei Ausgabe bei mir)

    Stehe gerade auf dem Schlauch - wie könnte man 'sowas' denn stattdessen machen? Ich habe einige Projekte, wo ich die Eventlist / den Eventreader extende und auch Newslist / Newsreader..

    Danke für Ideen & Gruß

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

    Standard

    Doch, das geht noch. Was genau funktioniert nicht bei dir?
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard

    wie geschrieben -> keine Fehlermeldung, keine Ausgabe.

    Habe gerade noch diesen Hinweis auf der verlinkten Seite entdeckt:

    "Since we are extending classes from the legacy Contao framework here, these controllers will not be automatically registered as a service by Contao. Therefore you will need to specifically register these controllers as services in your own config/services.yaml. See this article for more information."

    Ist das das Problem?

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

    Standard

    Zitat Zitat von tlnewbie Beitrag anzeigen
    Ist das das Problem?
    Kommt darauf an. Poste mal deinen Code und deine services.yaml.
    » sponsor me via GitHub or Revolut

  5. #5
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard

    PHP-Code:
    namespace App\Controller\FrontendModule;

    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\Response;
    //use Contao\CoreBundle\ServiceAnnotation\FrontendModule;
    use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
    use 
    Contao\BackendTemplate;
    use 
    Contao\Config;
    use 
    Contao\Controller;
    use 
    Contao\CoreBundle\Exception\PageNotFoundException;
    use 
    Contao\Date;
    use 
    Contao\Environment;
    use 
    Contao\Events;
    use 
    Contao\FilesModel;
    use 
    Contao\FrontendTemplate;
    use 
    Contao\Input;
    use 
    Contao\ModuleEventlist;
    use 
    Contao\ModuleModel;
    ...

    #[AsFrontendModule(category: 'xxx', priority: 1, template: 'mod_eventlist_xxx')]
    class EventlistXxxController extends ModuleEventlist
    {

        public function 
    __construct() {}

        public function 
    __invoke(ModuleModel $modelstring $section): Response
        
    {
            
    parent::__construct($model$section);

            return new 
    Response($this->generate());
        }

        
    /**
         * Display a wildcard in the back end
         *
         * @return string
         */
        
    public function generate()
        {
            
    //...
        
    }
    }

    # config/services.yml
    services:
      
    _defaults:
        
    autowiretrue
        autoconfigure
    true
        
    public: false

      App
    \:
        
    resource: ../src
        exclude
    : ../src/{Entity,Migrations,Resources,Tests}

      
    App\Controller\:
        
    resource: ../src/Controller
        
    public: true


    #config/routes.yaml
    app.controller:
        
    resource: ../src/Controller
        type
    attribute 
    Hatte es unter 4.13 mit annotation und jetzt mit attribute probiert.

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

    Standard

    Wenn du das so machst überschreibst du das bestehende Modul nicht, sondern legst ein neues an - unter der Kategorie "xxx". Oder ist das Absicht?
    » sponsor me via GitHub or Revolut

  7. #7
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard

    Ja, ich will es nicht überschreiben (nur extenden) und habe meine eigenen Sachen immer gern auch in einer eigenen Rubrik.

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

    Standard

    Das heißt, das Problem ist, dass das Modul in der Auflistung für den Typ eines Moduls nicht aufscheint?
    » sponsor me via GitHub or Revolut

  9. #9
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das heißt, das Problem ist, dass das Modul in der Auflistung für den Typ eines Moduls nicht aufscheint?
    Meinst du im Backend? Nein, das war immer ein eigener Modultyp.

    Den kann ich auch immer noch auswählen und auch dca Ergänzungen zum 'Original-Modul' werden im Backend dann richtig angezeigt.

    Ist noch in der config.php registriert
    $GLOBALS['FE_MOD']['xxx']['eventlist_xxx] = App\Controller\FrontendModule\EventlistXxxControll er::class;

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

    Standard

    Zitat Zitat von tlnewbie Beitrag anzeigen
    $GLOBALS['FE_MOD']['xxx']['eventlist_xxx] = App\Controller\FrontendModule\EventlistXxxControll er::class;
    Das musst du entfernen.
    » sponsor me via GitHub or Revolut

  11. #11
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das musst du entfernen.
    ok, probiere ich gleich, aber ohne war es ein unbekanntes Modul (nur noch zugewiesen).

    aber bin mir auch ziemlich sicher, dass ich das unter 4.13 auuch nicht hatte.

    EDIT:
    auf der FragmentController Handbuch Seite stand
    "Front end modules and content elements are still generated by the Contao framework and registered in the $GLOBALS['FE_MOD'] and $GLOBALS['TL_CTE'] respectively. "

    Daher hatte ich das bei der Fehlersuche reingenommen.
    Geändert von tlnewbie (22.05.2025 um 14:54 Uhr)

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

    Standard

    Ja - aber das musst/darfst du nicht selbst machen.

    Du schreibst außerdem immer "xxx". Poste immer den echten Code.
    » sponsor me via GitHub or Revolut

  13. #13
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ja - aber das musst/darfst du nicht selbst machen.
    ok, ist raus, jetzt steht bei der Modulauswahl im Backend wieder 'Unbekannte Option: eventlist_xxx'

    Zitat Zitat von Spooky Beitrag anzeigen
    Du schreibst außerdem immer "xxx". Poste immer den echten Code.
    sorry, aber will ich nicht machen, da hier ein Unternehmensname steht.. Das passt aber mit den xxx..

    Sont versuch es ich mal genau so.. ;-) dann hab ich schlimmstenfalls einen funktionierenden XxxController

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

    Standard

    Zitat Zitat von tlnewbie Beitrag anzeigen
    ok, ist raus, jetzt steht bei der Modulauswahl im Backend wieder 'Unbekannte Option: eventlist_xxx'
    Dann ist dein Modul aktuell nicht registriert. Poste die Ausgabe von
    Code:
    bin/console debug:container EventlistXxxController
    » sponsor me via GitHub or Revolut

  15. #15
    Contao-Fan
    Registriert seit
    27.11.2009.
    Beiträge
    338

    Multimedia

    Es fehlte Folgendes in der services.yaml:
    bind:
    $projectDir: '%kernel.project_dir%'

    also
    PHP-Code:
    # config/services.yml
    services:
      
    _defaults:
        
    autowiretrue
        autoconfigure
    true
        
    public: false
        bind
    :
          
    $projectDir'%kernel.project_dir%' 
    Habe mit einer anderen services.yaml verglichen & habe keine Ahnung, warum das hier nicht drin war. Unter 4.13 muss es irgendwie trotzdem funktioniert haben, aber egal / spielt keine Rolle!

    Danke dir für deine Geduld!

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

    Standard

    Statt dieses bind kannst du ab Symfony 6 (Contao 5.3+) auch das #[Autowire] Attribut nutzen.
    » sponsor me via GitHub or Revolut

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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