Eigener Service in plugin activate() - "You have requested a non-existent service"

Hello again.

Da ich keine Logik in der Plugin “Bootstrap” haben will, möchte ich dieses wie in der Vergangenheit in Services auslagern.
Mein Beispiel-Service funktioniert, da ich diesen in einem Subscriber nutze als auch im deactivate des Plugins:

public function deactivate(DeactivateContext $context): void
    {

        $customFieldService = $this->container->get(CustomFieldService::class);

        $customFieldService->deleteCustomFieldSet($context->getContext());

        parent::deactivate($context);

    }

Mein Service ist wie folgt registriert:

Leider klappt der Bezug des Services nicht in der activate Methode des Plugins.
Der Aufruf sieht ja quasi identisch aus:

public function activate(ActivateContext $context): void
    {

        $customFieldService = $this->container->get(CustomFieldService::class);

        $customFieldService->createCustomFieldSet($context->getContext());

        parent::activate($context);

    }

Leider knallt es:

In Container.php line 277:
                                                                                                 
You have requested a non-existent service "Mill\ProductAdvantages\Service\CustomFieldService".  

Frage: Was muss getan werden, um auf eigene Services auch im activate() zugreifen zu können?

Schöne Grüße,
Niklas

Deine Services stehen während der Installation nicht zur Verfügung so wie in Shopware 5. Du musst sie selber erstellen

Moin @TeichDatensysteme‍,

um da nochmal etwas mehr Licht ins Dunkel zu bringen:

Jedes Plugin in Shopware 6 kann seinen Code nur ausführen, wenn es bereits aktiv ist. So wird zum Beispiel auch die services.xml Datei erst geladen, wenn das Plugin bereits aktiv ist.
Du kannst dir aber sicherlich denken, dass in der activate Methode dein Plugin noch nicht aktiv ist - genau das soll ja die activate Methode ändern!

Da müsstest du also entsprechend auf klassische Klassen-Instanzierung zurückgreifen.

Gruß,
Patrick 

Okay - Danke für die Hinweise!
Ja, kann ich nachvollziehen - dann überlege ich mal, wie ich das ein- oder andere dann strukturiere - sollte gehen :slight_smile:

Schöne Grüße!
Niklas