Subscriber und Zugriff auf Container?

Noch eine Frage zu Subscriber:

Habe hier GenericPageLoadedEvent eingerichtet und müsste auf den Container zugreiffen, weiß aber ehrlich gesagt nicht wie. Versuche mit

$this->getContainer()->get(...);

klappen leider gar nicht. Klar, er findet die Methode nicht. Wie komme ich hier an den Container ran?

Schau dir doch einfach das entsprechende Entity auf Github an und schau welches Methoden dies hat. Dann weißt du, wie du an welche Variablen kommst.

Hallo @R4M ,

dein Subscriber implementiert ja das Interface EventSubscriberInterface, so dass standardmäßig nur die statische Methode getSubscribedEvents vorhanden ist bzw. implementiert werden muss.

Sonst weißt dein Subscriber standardmäßig keine weiteren Methoden bzw. Variablen. Daher ist ein „$this->getContainer()“ ohne weiteres nicht möglich.

Brauchst du in deinem Subscriber nun andere Services wie z.B. den Container, müsstest du diese „injecting“ siehe Dependency injection - Shopware Developer

Den ContainerService findest du über die Service Id: „service_container“

Grüße
Abdullah

Ne, das mit setContainer in einem Subscriber funktioniert so nicht. Jedenfalls nicht bei mir. Damit der Subscriber funktioniert muss in der services.xml

<tag name="kernel.event_subscriber" />

Und genau damit läuft „service_container“ nicht.

Gibt es hierzu schon eine Lösung? Habe gerade die gleiche Frage.

Verstehe nicht, was daran nicht funktionieren soll? Funktioniert bei mir ohne Probleme.

MySubscriber.php

private $container;

public function __construct($container)
{
    $this->container = $container;
}

service.xml

<service id="My\Plugin\Subscriber\MySubscriber">
    <tag name="kernel.event_subscriber"/>
    <argument type="service" id="service_container"/>