Wie erstellt man einen Ereignislistener in Shopware 6?

Event Listener in Shopware 6

Die folgenden Prozesse müssen in Shopware 6 befolgt werden, um einen Ereignis-Listener zu erstellen:

Erstellen Sie ein neues Plugin: In Shopware 6 müssen Sie zunächst ein neues Plugin erstellen, bevor Sie einen Ereignis-Listener erstellen können. Die Plugin-Struktur kann manuell oder mit dem Shopware 6 Plugin Creator erstellt werden.

Shopware 6 enthält eine Reihe von Ereignissen, die an verschiedenen systemischen Stellen ausgelöst werden. Shopware 6 enthält eine Liste der Ereignisse, die Sie in diesem Blogbeitrag sehen können. Liste der Ereignisse in Shopware 6

Erstellen Sie die Klasse, die als Ihr Event Listener fungieren wird, indem Sie sie innerhalb Ihres Plugins erstellen. Die Symfony Component Event Dispatcher und Event Subscriber Interface Schnittstelle sollte von dieser Klasse implementiert werden.

Erzeugen Sie Ihren persönlichen Abonnentenstamm

Um einen benutzerdefinierten Abonnenten zu registrieren, müssen Sie eine services.xml-Datei hochladen, die Ihr Plugin enthält. Dazu müssen Sie eine Datei namens services.xml in ein Verzeichnis namens src/Resources/config/ hochladen. Wenn Sie mit Symfony-Abonnenten vertraut sind, ist das genau das Richtige.

Definieren einer neuen Teilnehmerklasse

Bevor wir mit der Erstellung eines Abonnenten beginnen können, müssen wir eine Klasse erstellen, die das EventSubscriberInterface implementiert. Wie bereits erwähnt, sieht ein Abonnent für Shopware 6 genau so aus wie in Symfony.

Erstellen Sie Ihren ersten Abonnenten, der wie folgt aussehen wird.

File Path: <CustomPlugin>/src/Subscriber/FirstSubscriber.php

<?php declare(strict_types=1);

namespace Custom\First\Subscriber;

use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\Content\Product\ProductEvents;

class FirstSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        // Return the events to listen to as array like this:  <event to listen to> => <method to execute>
        return [
            ProductEvents::PRODUCT_LOADED_EVENT => 'onProductsLoaded'
        ];
    }

    public function onProductsLoaded(EntityLoadedEvent $event)
    {
        // Do something
        // E.g. work with the loaded entities: $event->getEntities()
    }
}

Sobald Sie den Ereignis-Listener erstellt haben, können Sie ihn in der Datei services.xml Ihres Plugins registrieren.

File Path: <CustomPlugin>/src/Resources/config/services.xml

<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="Custom\First\Subscriber">
            <tag name="kernel.event_subscriber"/>
        </service>
    </services>
</container>

Sobald Sie den Ereignis-Listener registriert haben, wird er automatisch aufgerufen, wenn das Ereignis product.loaded ausgelöst wird.

Bitte kontaktieren Sie uns unter manish@bay20.com oder rufen Sie uns unter +91-8800519180 an, wenn Sie Unterstützung im Zusammenhang mit Shopware benötigen. Sie können auch die Shopware 6 Entwicklungsseite besuchen, um die von uns angebotenen Dienstleistungen zu überprüfen.