Eigene Services in Plugin-Klasse während des Installierens nutzen

Hallo,

für mein Plugin habe ich einige Services geschrieben, welche ich auch erfolgreich im Backend-Controller des Plugins nutze.

Nun wollte ich die selben Services direkt in der Plugin-Klasse (die von Plugin erbt) beim Installieren / Deinstallieren des Plugins nutzen, jedoch sagt mir Shopware in diesem Fall:

 You have requested a non-existent service "my\_plugin.attribute\_helper"

Unter diesem Namen (my_plugin.attribute_helper) kann ich den Service im Controller allerdings nutzen. Meine Vermutung ist also, dass der DI-Container beim Installieren / Deinstallieren die Services, die ein Plugin registriert, gar nicht kennt. Ist dem so? Sollte ich die Klassen des Services dann also lieber manuell einbinden, anstatt über den Service?

Danke und viele Grüße,
Marc

 

Hey Marc,

Der Service ist erst ab den nächsten Request da. Du solltest den Service am besten selbst constructen bei der Installation 

Danke, @Shyim‍, so habe ich es jetzt auch gelöst. Mit dem nächsten Request meinst du den Zeitpunkt, nachdem das Plugin installiert ist, oder?

Ich wollte mich hier kurz anhängen, weil ich dasselbe Problem habe:

You have requested a non-existent service: my_namespace.supplier_codes_updater

Das Problem ist, dass dieser Service einige Abhängigkeiten hat, die ich ebenfalls in der services.xml definiere. Mit einem simplen new() komme ich da also nicht weiter.

Der Service selber liest bei der Plugin-Aktivierung einige Daten aus einer entfernten API und persistiert sie mit Hilfe eines eigenen Models. Löse ich so etwas wirklich am Besten mit einem Service in der Plugin-Klasse, oder gibt es bessere Herangehensweisen?

 

Danke, Paddelboot