/** * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { if (!$event->isMasterRequest()) { return; } $request = $event->getRequest(); if (!$this->requestMatcher->matches($request)) { return; } /** @var OrderInterface $order */ $order = $this->cartContext->getCart(); if ($order->isEmpty()) { $event->setResponse(new RedirectResponse($this->urlGenerator->generate('sylius_shop_cart_summary'))); } $stateMachine = $this->stateMachineFactory->get($order, OrderCheckoutTransitions::GRAPH); if ($stateMachine->can($this->getRequestedTransition($request))) { return; } if (null !== ($referer = $this->getReferer($request))) { $event->setResponse(new RedirectResponse($referer)); return; } $event->setResponse(new RedirectResponse($this->urlGenerator->generateForOrderCheckoutState($order))); }