Änderungen an der Subscriber eines anderen Plugins

Hallo,

ich habe ein Plugin erstellt, das einen Service des PayPal-Plugins dekoriert. Ich möchte nun eine Methode im Subscriber ändern, finde jedoch keine Anleitung dafür. Wie kann ich vorgehen, um die Methode im Subscriber eines anderen Plugins zu überschreiben? Ich bin mir bewusst, dass ich den Subscriber auch im PayPal-Plugin überschreiben kann, aber das ist nur eine temporäre Lösung.

Kann mir jemand einen Leitfaden geben, wie ich vorgehen kann, um die Methode im Subscriber eines anderen Plugins in Shopware 5 zu überschreiben?

Vielen Dank im Voraus!

Hallo @karem.albadawi

welchen Subscriber genau möchtest du überschreiben und wieso? Vielleicht gibt es ja einen anderen Weg, dein gewünschten Verhalten zu erreichen :slight_smile:

Viele Grüße aus Schöppingen
Michael Telgmann

Hallo @Michael_Telgmann

Ich möchte den ExpressCheckout-Subscriber ändern, indem ich in der Methode „addExpressCheckoutButtonDetail“ die Überprüfung auf ESD-Artikel auskommentiere.

Mit freundlichen Grüßen
Karim Al Badawi

Hi Karim,

reicht es nicht aus, diesen Service zu dekorieren? SwagPaymentPayPalUnified/EsdProductChecker.php at 6.0.3 · shopwareLabs/SwagPaymentPayPalUnified · GitHub
Der wird ja eigentlich an allen Stellen genutzt, um zu prüfen, ob ESD Produkte vorhanden sind.

Viele Grüße aus Schöppingen
Michael Telgmann

Hallo @Michael_Telgmann,

Nein, das hat leider nur fürs Listing gereicht.
Für die Detailseite wird in der Methode „addExpressCheckoutButtonDetail“ nach dem Attribut ‚ESD‘ in sArticle gesucht. Dort wird die Service EsdProductChecker nicht verwendet.

Als ich die folgende If-statement in ExpressCheckout auskommentiert habe, wurden die Express Checkout Buttons in Detail angezeigt.

    if ($args->getSubject()->View()->getAssign('sArticle')['esd'] === true) {
        return;
    }

PS: Mich würde es für weitere Projekte interessieren, wie man vorgehen soll, wenn man den Subscriber eines anderen Plugins ändern will.

Mit freundlichen Grüßen,
Karim Al Badawi

Hi Karim,

grundsätzlich sind Subscriber ja auch als Service im DI Container von Symfony deklariert. D.h. du kannst hier auch das decorator Pattern für eine Erweiterung nutzen. Statt aber das gleiche Interface zu implementieren, musst du in diesem Fall von dem Subscriber erben, den du erweitern/ändern möchtest.

Viele Grüße aus Schöppingen
Michael Telgmann

Hallo,

vielen Dank. Ich werde es nun so probieren.