zwar bin ich dabei ein EventListener Plugin zu schreiben. So weit klappt alles auch und bin jetzt dabei nach und nach die Events zu suchen die ich brauche.
Gibt es einen debug mode um zu sehen welches Event getriggered wird? z.B. suche ich gerade ein Event was getriggered wird wenn man seine Bestellungen /account/order aufruft.
vendor/shopware/storefront/Page/Account/Order/AccountOrderPageLoader.php
$this->eventDispatcher->dispatch(
new AccountOrderPageLoadedEvent($page, $salesChannelContext, $request)
);
Die Events die ich laut Documentation abfangen kann sind solche ORDER_LINE_ITEM_LOADED_EVENT
Daher meine Frage wie ich an solche Events (wenn ĂĽberhaupt vorhanden) dran komme.
Ich mach mal ein doppelpost, da ich nun eine ähnliche Frage habe. Erster Post bleibt erstmal Baustelle 1.
Mit dem Event
MAPPING\_CUSTOMER\_PROFILE\_SAVE
Bekomme ich zwar den $context->getContext() durch das MappingEvent. Ist es dennoch möglich irgendwie an die uuid zu kommen? Ich weiĂź, wenn das Event getriggered wird, wird zusätzlich auchÂ
CUSTOMER\_WRITTEN\_EVENT
getriggerd, wo dann die uuid drin steht. Hätte dann aber kein Bezug mehr, dass es geupdated worden ist.
Das Thema Events beschäftigt mich gerade auch. Ich bin mir jetzt nicht sicher, ob wir an ähnlichen Themen arbeiten.
Ich musste zumindest das ProductListing ausbauen und habe mich dafĂĽr ĂĽber einen Subscriber auf das ProductListingResultEvent gehookt. Die Klasse dafĂĽr liegt unter: platform/src/Core/Content/Product/Events/ProductListingResultEvent.php
Ich wĂĽrde dein Event irgendwo hier vermuten:Â src/Core/Checkout/Customer/Event
Das Thema Events beschäftigt mich gerade auch. Ich bin mir jetzt nicht sicher, ob wir an ähnlichen Themen arbeiten.
Ich musste zumindest das ProductListing ausbauen und habe mich dafĂĽr ĂĽber einen Subscriber auf das ProductListingResultEvent gehookt. Die Klasse dafĂĽr liegt unter: platform/src/Core/Content/Product/Events/ProductListingResultEvent.php
Ich wĂĽrde dein Event irgendwo hier vermuten:Â src/Core/Checkout/Customer/Event
Ich hoffe, ich konnte dir etwas weiterhelfen.
Immerhin mal eine Antwort Naja die Customer Events (vendor/shopware/core/Checkout/Customer/CustomerEvents.php) die alle vorhanden sind, triggern nicht das richtige was ich bräuchte. Wie oben schon steht, wird zwar AccountOrderPageLoadedEvent aufgerufen, aber ohne const (extra function call) um dort zu hooken.
Obwohl in der AccountRegistrationService.php wenn kein DoubleOptInRegistration() vorhanden ist, er das event->dispatch, wird es nicht abgefangen. Im RegisterController bei der register() Funktion (vendor/shopware/storefront/Controller/RegisterController.php) ist auch kein event->dispatch drin.
Ich glaube ich habe es gelöst bekommen. In der services.xml  war nurÂ
;
aber ich glaube
hat einfach nur gefehlt. Jetzt kommen zumindest die CustomerRegister / Login Events an.
Was genau hast du gemacht? Meine services.xml sieht so aus:Â
Meine Subscriber Klasse so:Â
use Shopware\Core\Checkout\Customer\CustomerEvents;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class MySubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return[
CustomerEvents:: CUSTOMER_REGISTER_EVENT => 'customerRegistered',
CustomerRegisterEvent::class => 'customerRegistered',
];
}
public function customerRegistered(EntityLoadedEvent $event)
{
// Do something
// E.g. work with the loaded entities: $event->getEntities()
XXXXXXXXX
}
}
Die customerRegistered Funktion wird aber nicht ausgefĂĽhrt. Bin mir bei der service.xml aber nicht ganz sicher. Hatte dort die Tags schon im einem Service, anstatt 2 services mit je einem Tag, aber gleiches Resultat. Funktion wird nicht ausgefĂĽhrt
@Introser‍, bist du hier irgendwie weitergekommen? Denn ich habe das gleiche Problem.
Ich verwende bereits an verschiedenen Orten EventListeners und es funktioniert einwandfrei. Allerdings benötige ich nun einen Listener für CartEvents::CHECKOUT_ORDER_PLACED und in diesem Fall wird der Listener nicht ausgeführt. Ich habe keine Ahnung wieso.
In der Toolbar sehe ich nur die Called Listeners (und da ist meiner nicht dabei), nicht aber die Dispatched Events, oder such ich am falschen Ort im Symfony Profiler?
Wie gesagt erscheint mein Listener, bzw. Subscriber nicht in der Liste der “Called Listeners”, ein die() direkt vor dem Event Dispatch im Shopware Code greift aber…
@Introser‍, bist du hier irgendwie weitergekommen? Denn ich habe das gleiche Problem.
Ich verwende bereits an verschiedenen Orten EventListeners und es funktioniert einwandfrei. Allerdings benötige ich nun einen Listener für CartEvents::CHECKOUT_ORDER_PLACED und in diesem Fall wird der Listener nicht ausgeführt. Ich habe keine Ahnung wieso.