View (Produktseite, ...) erweitern

Hello again!

Ich habe Beispiele gesichtet, wie man in der Auslieferung von Produktseite eingreifen kann, z.B.

https://docs.shopware.com/en/shopware-platform-dev-en/getting-started/indepth-guide-bundle/storefront?category=shopware-platform-dev-en/getting-started/indepth-guide-bundle
https://docs.shopware.com/en/shopware-platform-dev-en/how-to/register-subscriber#creating-the-subscriber-class

Ebenfalls die Symfony Doku unter https://symfony.com/doc/current/event_dispatcher.html

Leider ist mir nach den ganzen Beispielen trotzdem immer noch nicht klar, wie man z.B. der View ganz allgemeine Daten zur Verfügung stellen kann.
Der richtige Weg, um z.B. einen Artikel auf der Detailseite abzugreifen, wäre ja 

    public static function getSubscribedEvents(): array
    {
        // Return the events to listen to as array like this: => 
        return [
            ProductEvents::PRODUCT_LOADED_EVENT => 'onProductsLoaded'
        ];
    }

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

Wie würde es weiter gehen, um der View etwas mitzugeben? Ganz einfache allgemeine Daten (nicht wie im Criteria Beispiele weitere associations)
Klassisch bei Symfony würde das ja im Controller passieren - wie aber hier im Event?
Und, muss die Entität immer als Liste behandelt werden (wie hier im EntityLoadedEvent) - gibt es nicht den Abgriff des einzelnen Objektes, so wie früher? …

Freue mich über Feedback.
Niklas

Hallo Niklas,

das von dir beschriebene Event wird immer dann aufgerufen, wenn Produkte gelesen werden. Das muss nicht zwingend die Storefront Detail Seite sein, sondern kann auch die Produktliste in der Administration sein.
Nun hängt es natürlich davon ab, ob du wirklich alle Fälle abdecken möchtest oder nur den Storefront-Fall. Für letzteres gibt es spezielle eigene Events. Diese werden in den *PageLoader geworfen: https://github.com/shopware/platform/tree/master/src/Storefront/Page Diese Events heißen alle *PageLoadedEvent. So gibt es z.B. für die Produktdetailseite folgendes Event https://github.com/shopware/platform/blob/master/src/Storefront/Page/Product/ProductPageLoadedEvent.php
Wenn du dich darauf registrierst, kannst du z.B. das page Objekt erweitern. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Vielen Dank, [@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann „Michael Telgmann“)‍!
Genau das habe ich gesucht - klappt wunderbar.

Schöne Grüße!
Niklas