Service für andere Plugins erzeugen

Wir werden sicher einige Plugins für unseren Shop bauen und deswegen möchte ich Services (Helper) in einem Basis Plugin erstellen, auf die andere Plugin zugreifen können. So ist mir zB recht unerwartet aufgefallen, dass innerhalb von Shopware nichtmal so banale Daten wie der locale code (de_de, fr_fr, …) des aktuellen Shops zur Verfügung stehen.

In Swag PayPal habe ich genau den Service gefunden, den ich nutzen würde -> Util\LocaleCodeProvider

Ich kann diesen innerhalb meiner Plugins nutzen. Ich würde aber sehr gern die Abhängigkeit von Swag Plugins minimal halten, dass Updates dieser nicht meine eigenen Plugins zerschießen.

Ich habe also ein Basic Plugin gestartet, installiert und aktiviert. Die Service Klasse angelegt und in der service.xml registiert. Will ich diese allerdings in meinem anderen Plugin nutzen, erhalte ich imemr den Fehler, dass er den Service nicht kennt. "The service „Smy\ProductDesigner\Subscriber\ProductSubscriber“ has a dependency on a non-existent service „Smy\Basic\Service\LocaleCodeService“. "

Basic service.xml

Plugin service.xml

Im Subscriber ist entsprechend auch per Use der Service eingebunden (use Smy\Basic\Service\LocaleCodeService;) und im constructor wir er ebenfalls übernommen.

PHPStorm kann mit dem Symfony Plugin auch die Pfade alle wunderbar auflösen. Habe caches geleert und auch ein Reinstall des Plugins versucht.

Steh ein wenig auf dem Schlauch, was falsch sein könnte.

Ich werde den Service vorerst direkt in der Plugin hinzufügen.

Wenn aber jemand weiß, wie ich Services für andere Plugins zur Verfügung stellen kann, wäre ich trotzdem weiterhin über eine Antwort dankbar.

Das PayPal Plugin nutzt da scheinbar eine DependencyInjection aber bin nicht sicher, ob das für den globalem Zugriff benutzt wurde oder aus einem anderen Grund.

Hallo,

Du musst den Service als public deklarieren.

Dann kannst Du auch von anderen Plugins darauf zugreifen.

Das hatte ich bereits probiert. Das bringt leider nichts.

Ist aber zb beim PayPal Plugin auch nicht gesetzt.