# Subscriber event nur im frontend

**URL:** <https://forum.shopware.com/t/subscriber-event-nur-im-frontend/65389>\
**Category:** Programmierung\
**Created:** [10. März 2020 um 14:07 UTC](https://forum.shopware.com/t/subscriber-event-nur-im-frontend/65389 "2020-03-10T14:07:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [10. März 2020 um 14:07 UTC](https://forum.shopware.com/t/subscriber-event-nur-im-frontend/65389/1 "2020-03-10T14:07:35Z")

</div>

Hi,

wie kann ein event nur im frontend ausgeführt werden? Als Beispiel; ich möchte im frontend Werte von Artikeln ändern:

```
  public static function getSubscribedEvents(): array
  {
      return [
          ProductEvents::PRODUCT_SEARCH_RESULT_LOADED_EVENT => 'searchResultLoaded',
      ];
  }

public function searchResultLoaded(EntitySearchResultLoadedEvent $event, string $eventName, TraceableEventDispatcher $debug): void
  {
    $this->context = $event->getResult()->getContext();
    if(get_class($this->context->getSource()) == 'Shopware\Core\Framework\Api\Context\AdminApiSource'){
      return;
    }
    
    // do something with $event->getResult()

  }

```

Momentan frage ich den Klassennamen vom context source ab. Der ist im Adminpanel nämlich `Shopware\Core\Framework\Api\Context\AdminApiSource`. Fühlt sich aber irgendwie falsch an. Hat jemand einen besseren Vorschlag?

---

<div class="post-metadata">

**Author:** ![reisueber](https://avatars.discourse-cdn.com/v4/letter/r/5daacb/32.png) [@reisueber](https://forum.shopware.com/u/reisueber)\
**Post date:** [10. März 2020 um 15:22 UTC](https://forum.shopware.com/t/subscriber-event-nur-im-frontend/65389/2 "2020-03-10T15:22:27Z")

</div>

Ich versteh nicht genau was du genau möchtest. Du kannst über den Subscriber bei einem Produkt etwas hinzufügen. Theoretisch müsste man auf diese Weise auch Werte manipulieren können. Vielleicht hilft dir dieser Code etwas.

```
public static function getSubscribedEvents()
    {
        return [
            ProductSearchResultEvent::class => 'handleResult',
        ];
    }

public function handleResult(ProductSearchResultEvent $event)
{
    $result = $event->getResult();

    $tempArr = ['blabla'];
    
    foreach ($result->getEntities() as $product) {
        $product->addExtension("myExtension", new ProductStruct($tempArr));
    }
}

```

ProductStruct.php:

```
class ProductStruct extends Struct
{
    var $myVar;

    public function __construct(array $myVar)
    {
        $this->myVar = $myVar;
    }
}

 Im Frontend {{ product.extension('myExtension').myVar}}
```

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [11. März 2020 um 06:46 UTC](https://forum.shopware.com/t/subscriber-event-nur-im-frontend/65389/3 "2020-03-11T06:46:21Z")

</div>

Bei dir wird ja `ProductSearchResultEvent` sowohl im Frontend als auch im Backend ausgeführt. D.h. deine Results werden auch im Backend mit `myExtension` erweitert.

Meine Frage ist halt, wie kann ich das auf eins von beiden beschränken? In sw5 hat das ja über den Event-Namen funktioniert `Enlight_Controller_Action_PostDispatch_Frontend`.

---

<div class="post-metadata">

**Author:** ![FinnMac](https://avatars.discourse-cdn.com/v4/letter/f/8e7dd6/32.png) [@FinnMac](https://forum.shopware.com/u/FinnMac)\
**Post date:** [2. Februar 2022 um 10:12 UTC](https://forum.shopware.com/t/subscriber-event-nur-im-frontend/65389/4 "2022-02-02T10:12:11Z")

</div>

Hast du eine Lösung gefunden?
