public function onKernelException(GetResponseForExceptionEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $request = $event->getRequest(); if ('' !== rtrim($request->getPathInfo(), '/')) { return; } $ex = $event->getException(); if (!$ex instanceof NotFoundHttpException || !$ex->getPrevious() instanceof ResourceNotFoundException) { return; } $locale = $this->localeResolver->resolveLocale($request, $this->locales) ?: $this->defaultLocale; $request->setLocale($locale); $params = $request->query->all(); unset($params['hl']); $response = new RedirectResponse($request->getBaseUrl() . '/' . $locale . '/' . ($params ? '?' . http_build_query($params) : '')); $response->setPrivate(); $response->setMaxAge(0); $response->setSharedMaxAge(0); $response->headers->addCacheControlDirective('must-revalidate', true); $response->headers->addCacheControlDirective('no-store', true); $event->setResponse($response); }
/** * Handle the callback. * * @param OrderInterface $order * @param string $action * * @return Response */ public function processCallback(OrderInterface $order, $action) { $params = array('bank' => $this->getCode(), 'reference' => $order->getReference(), 'check' => $this->generateUrlCheck($order), 'action' => $action); $url = $this->router->generate($this->getOption('url_callback'), $params, true); $response = $this->browser->get($url); $routeName = 'ok' === $response->getContent() ? 'url_return_ok' : 'url_return_ko'; $response = new RedirectResponse($this->router->generate($this->getOption($routeName), $params, true), 302, array('Content-Type' => 'text/plain')); $response->setPrivate(); return $response; }