# Event-Subscriber für Merkzettel

**URL:** <https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947>\
**Category:** Shopware 6 (German)\
**Created:** [25. August 2022 um 09:54 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947 "2022-08-25T09:54:01Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [25. August 2022 um 09:54 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/1 "2022-08-25T09:54:01Z")

</div>

Hallo,

ich verwende einen Event-Subscriber (ProductListing) um mir im Listing die Produkt-Eigenschaften zu beschaffen:

```auto
public static function getSubscribedEvents()
{
    return [
        ProductListingCriteriaEvent::class => 'handleListingRequest',
    ];
}

public function handleListingRequest(ProductListingCriteriaEvent $event): void
{
    $event->getCriteria()->addAssociation('properties');
    $event->getCriteria()->addAssociation('properties.group');
}

```

Die Infos benötige ich, um für die Produktbox spezielle Ribbons zu rendern, die von diversen Eigenschaften abhängig sind.

Das Problem: Das Event greift nicht, wenn ich Produkte auf dem Merkzettel habe. Gibt es ein ähnliches Event, welches beim Aufruf der Merkzettel-Funktion anspringt?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [25. August 2022 um 10:36 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/2 "2022-08-25T10:36:45Z")

</div>

Vermutlich wird es folgendes sein: WishListPageProductCriteriaEvent

> <https://github.com/shopware/platform/blob/dea144715a735c2b6f53098b9c92f9eeebc16c21/src/Storefront/Page/Wishlist/WishListPageProductCriteriaEvent.php>

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [25. August 2022 um 11:36 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/3 "2022-08-25T11:36:58Z")

</div>

Danke. Ich steige noch nicht ganz durch, wie ich es korrekt im Theme auffangen muss.

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [25. August 2022 um 12:19 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/4 "2022-08-25T12:19:50Z")

</div>

```auto
use Shopware\Storefront\Page\Wishlist\WishListPageProductCriteriaEvent;

public static function getSubscribedEvents()
{
    return [
        ProductListingCriteriaEvent::class => 'handleListingRequest',
        WishListPageProductCriteriaEvent::class => 'handleListingRequest'
    ];
}

public function handleListingRequest(ProductListingCriteriaEvent $event): void
{
    $event->getCriteria()->addAssociation('properties');
    $event->getCriteria()->addAssociation('properties.group');
}

```

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [25. August 2022 um 12:29 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/5 "2022-08-25T12:29:09Z")

</div>

Super, vielen Dank. Das funktioniert.

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [25. August 2022 um 14:02 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/6 "2022-08-25T14:02:57Z")

</div>

mal noch ne PHP-Frage dazu:

beide Events triggern die Funktion `handleListingRequest`. Da es aber zwei unterschiedliche Event-Typen sind (`ProductListingCriteriaEvent, WishListPageProductCriteriaEvent`) brauche ich momentan zwei Funktionen.

Kann man den Übergabeparamter `$event` so typisieren, dass man mit einer Funktion hinkommt?

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [26. August 2022 um 06:52 UTC](https://forum.shopware.com/t/event-subscriber-fuer-merkzettel/95947/7 "2022-08-26T06:52:03Z")

</div>

Okay, es funktioniert mittels PHP type hints:

```auto
use Shopware\Core\Content\Product\Events\ProductListingCriteriaEvent;
use Shopware\Storefront\Page\Wishlist\WishListPageProductCriteriaEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class ListingPropertiesSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return [
            ProductListingCriteriaEvent::class => 'handleListingRequest',
            WishListPageProductCriteriaEvent::class => 'handleListingRequest'
        ];
    }

    public function handleListingRequest($event): void
    {
        $event->getCriteria()->addAssociation('properties');
        $event->getCriteria()->addAssociation('properties.group');
    }
}

```
