{"id":12129,"date":"2022-12-21T11:56:30","date_gmt":"2022-12-21T11:56:30","guid":{"rendered":"https:\/\/www.bay20.com\/?p=12129"},"modified":"2025-05-14T18:35:08","modified_gmt":"2025-05-14T12:50:08","slug":"wie-erstelle-ich-einen-ereignis-listener-in-shopware-6","status":"publish","type":"post","link":"https:\/\/www.bay20.com\/de\/wie-erstelle-ich-einen-ereignis-listener-in-shopware-6\/","title":{"rendered":"Wie erstellt man einen Ereignislistener in Shopware 6?"},"content":{"rendered":"\n<p>Die folgenden Prozesse m\u00fcssen in Shopware 6 befolgt werden, um einen Ereignis-Listener zu erstellen:<\/p>\n\n\n\n<p>Erstellen Sie ein neues Plugin: In Shopware 6 m\u00fcssen Sie zun\u00e4chst ein neues Plugin erstellen, bevor Sie einen Ereignis-Listener erstellen k\u00f6nnen. Die Plugin-Struktur kann manuell oder mit dem Shopware 6 Plugin Creator erstellt werden.<\/p>\n\n\n\n<p>Shopware 6 enth\u00e4lt eine Reihe von Ereignissen, die an verschiedenen systemischen Stellen ausgel\u00f6st werden. Shopware 6 enth\u00e4lt eine Liste der Ereignisse, die Sie in diesem Blogbeitrag sehen k\u00f6nnen. <a href=\"https:\/\/www.bay20.com\/list-of-events-in-shopware-6\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"List Of Events In Shopware 6\">Liste der Ereignisse in<\/a> <a href=\"https:\/\/www.bay20.com\/de\/liste-der-ereignisse-in-shopware-6\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"List Of Events In Shopware 6\">Shopware 6<\/a><\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p><strong>Erzeugen Sie Ihren pers\u00f6nlichen Abonnentenstamm<\/strong><\/p>\n\n\n\n<p>Um einen benutzerdefinierten Abonnenten zu registrieren, m\u00fcssen Sie eine services.xml-Datei hochladen, die Ihr Plugin enth\u00e4lt. Dazu m\u00fcssen Sie eine Datei namens services.xml in ein Verzeichnis namens src\/Resources\/config\/ hochladen. Wenn Sie mit <a href=\"https:\/\/symfony.com\/doc\/current\/event_dispatcher.html#creating-an-event-subscriber\" target=\"_blank\" rel=\"noreferrer noopener\">Symfony-Abonnenten<\/a> vertraut sind, ist das genau das Richtige.<\/p>\n\n\n\n<p><strong>Definieren einer neuen Teilnehmerklasse<\/strong><\/p>\n\n\n\n<p>Bevor wir mit der Erstellung eines Abonnenten beginnen k\u00f6nnen, m\u00fcssen wir eine Klasse erstellen, die das EventSubscriberInterface implementiert. Wie bereits erw\u00e4hnt, sieht ein Abonnent f\u00fcr Shopware 6 genau so aus wie in Symfony.<\/p>\n\n\n\n<p>Erstellen Sie Ihren ersten Abonnenten, der wie folgt aussehen wird.<\/p>\n\n\n\n<p><strong>File Path:<\/strong> &lt;CustomPlugin&gt;\/src\/Subscriber\/FirstSubscriber.php <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php declare(strict_types=1);\n\nnamespace Custom\\First\\Subscriber;\n\nuse Shopware\\Core\\Framework\\DataAbstractionLayer\\Event\\EntityLoadedEvent;\nuse Symfony\\Component\\EventDispatcher\\EventSubscriberInterface;\nuse Shopware\\Core\\Content\\Product\\ProductEvents;\n\nclass FirstSubscriber implements EventSubscriberInterface\n{\n    public static function getSubscribedEvents(): array\n    {\n        \/\/ Return the events to listen to as array like this:  &lt;event to listen to&gt; =&gt; &lt;method to execute&gt;\n        return &#91;\n            ProductEvents::PRODUCT_LOADED_EVENT =&gt; 'onProductsLoaded'\n        ];\n    }\n\n    public function onProductsLoaded(EntityLoadedEvent $event)\n    {\n        \/\/ Do something\n        \/\/ E.g. work with the loaded entities: $event-&gt;getEntities()\n    }\n}<\/code><\/pre>\n\n\n\n<p>Sobald Sie den Ereignis-Listener erstellt haben, k\u00f6nnen Sie ihn in der Datei services.xml Ihres Plugins registrieren.<\/p>\n\n\n\n<p><strong>File Path: <\/strong>&lt;CustomPlugin&gt;\/src\/Resources\/config\/services.xml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" ?&gt;\n\n&lt;container xmlns=\"http:\/\/symfony.com\/schema\/dic\/services\"\n           xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n           xsi:schemaLocation=\"http:\/\/symfony.com\/schema\/dic\/services http:\/\/symfony.com\/schema\/dic\/services\/services-1.0.xsd\"&gt;\n\n    &lt;services&gt;\n        &lt;service id=\"Custom\\First\\Subscriber\"&gt;\n            &lt;tag name=\"kernel.event_subscriber\"\/&gt;\n        &lt;\/service&gt;\n    &lt;\/services&gt;\n&lt;\/container&gt;<\/code><\/pre>\n\n\n\n<p>Sobald Sie den Ereignis-Listener registriert haben, wird er automatisch aufgerufen, wenn das Ereignis product.loaded ausgel\u00f6st wird.<\/p>\n\n\n\n<p><strong>Bitte kontaktieren Sie uns unter <strong><a href=\"mailto:manish@bay20.com\">manish@bay20.com<\/a><\/strong> oder rufen Sie uns unter <a href=\"https:\/\/api.whatsapp.com\/send?phone=+918800519180&amp;text=Hi, I contacted you through your website.\" title=\"+91-8800519180\">+91-8800519180<\/a> an, wenn Sie Unterst\u00fctzung im Zusammenhang mit Shopware ben\u00f6tigen. Sie k\u00f6nnen auch die <strong><a href=\"https:\/\/www.bay20.com\/de\/mieten-shopware6-entwickler\/\" title=\"Shopware 6 development\">Shopware 6 <strong>Entwicklungsseite<\/strong><\/a><\/strong> besuchen, um die von uns angebotenen Dienstleistungen zu \u00fcberpr\u00fcfen.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Create a new plugin: In Shopware 6, you must first create a new plugin before you can create an event listener. The plugin structure can be manually created or created using the Shopware 6 Plugin Creator.<\/p>\n","protected":false},"author":30,"featured_media":12605,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78,115,91],"tags":[],"class_list":["post-12129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-shopware","category-shopware-6","category-shopware-6-anleitungen"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/12129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/comments?post=12129"}],"version-history":[{"count":10,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/12129\/revisions"}],"predecessor-version":[{"id":17123,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/12129\/revisions\/17123"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/media\/12605"}],"wp:attachment":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/media?parent=12129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/categories?post=12129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/tags?post=12129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}