I have created an EventSubscriber for getting an order when the "order" button is clicked.
#src/EventSubscriber/OrderSubmittedSubscriber.php
class OrderSubmittedSubscriber implements EventSubscriberInterface
{
private LoggerInterface $logger;
public static function getSubscribedEvents(): array
{
return [
// CheckoutOrderPlacedEvent::class => 'onOrderPlaced',
'checkout.order.placed' => 'onOrderPlaced',
];
}
public function onOrderPlaced(CheckoutOrderPlacedEvent $event): void
{
$orderId = $event->getOrderId();
$state = $event->getOrder()->getStateMachineState()->getName();
$this->logger->notice('onOrderPlaced orderId: '.var_export($orderId, true));
$this->logger->notice('onOrderPlaced state: '.var_export($state, true));
}
#src/Resources/config/services.xml
plugins/MyOrderListener/src/Resources/config/services.xml
<services>
<service id="ClpOrderListener\Listener\OrderSubmittedListener">
<argument type="service" id="logger"/>
<tag name="kernel.event_listener" event="order.written"/>
</service>
</services>
But when I click the "order" button nothing get logged. What is missing? Is it the wrong event?
I followed this example: how to detect an order placed with shopware 6.5 (event subscribers) and also get its present state
You have some minor issues in your subscriber and in the XML definition. For me, it works like this: