Ergebnis 1 bis 3 von 3

Thema: [Gelöst] Service Decorator Argumente

  1. #1
    Contao-Nutzer
    Registriert seit
    23.11.2017.
    Beiträge
    9

    Standard [Gelöst] Service Decorator Argumente

    Hallo zusammen,

    ich habe zwei Bundles geschrieben. Das eine soll den Service des anderen dekorieren.

    Wenn ich nun den Decorator aufrufe, dann macht der alles genau so wie er es soll. Das eigentliche dekorieren scheint also zu klappen.
    Wenn ich nun aber den dekorierten Service aufrufen möchte bekomme ich einen Fehler da das Argument das dem Decorator übergeben wird NULL ist.
    Alle anderen Argumente kommen richtig an, ich denke also es ist kein Fehler in der service.yml

    Ich vermute dass das Problem daran liegt dass mein zu dekorierender Service noch nicht geladen ist wenn ich den Decorator laden.

    Gibt es eine Möglichkeit die Reihenfolge in der die Bundles geladen werden zu verändern?

    Ich bin leider in der Symfony Dokumentation nicht fündig geworden.

    Würde mich über Hilfe freuen.

    Danke schon Mal!
    Markus
    Geändert von MClaus (18.01.2018 um 21:45 Uhr)

  2. #2
    Contao-Nutzer
    Registriert seit
    23.11.2017.
    Beiträge
    9

    Standard

    Falls jemand wissen will wie es funktioniert. Die Lösung für das Problem ist im Contao Umfeld wohl nicht mit einem Decorator zu lösen sonder mit einem CompilerPass.

    In der Bundle Datei:

    PHP-Code:
    class KptecLmBundle extends Bundle {
         
        public function 
    build(ContainerBuilder $container)
        {
            
    $container->addCompilerPass(new OverrideServiceCompilerPass());
        }


    und dann der CompilerPass selbst:

    PHP-Code:

    class OverrideServiceCompilerPass implements CompilerPassInterface
    {
     
        public function 
    process(ContainerBuilder $container)
        {
            
    $defNewService $container->getDefinition('lala.contao-com.listener.communication');
            
    $defNewService ->setClass('Kptec\LmBundle\EventListener\ExtLalaCommunicationService');

        }

    Ein Service kann hierbei sowohl mittels eines Decorators dekoriert als auch wie ich das hier mache komplett extenden und ersetzen werden.

  3. #3
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Dein Code-Beispiel wäre jetzt ein Service ersetzen, aber der DIC von Symfony hat eingebauten Support für Decoration: https://symfony.com/doc/current/serv...ecoration.html
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

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
  •