Permalink
Browse files

fixed Request management for LocaleListener

  • Loading branch information...
1 parent 39a9dfe commit 4d44f33dc3b69d9454f63531c1465c55317291bd @fabpot fabpot committed Feb 6, 2013
Showing with 12 additions and 21 deletions.
  1. +12 −21 EventListener/LocaleListener.php
@@ -12,7 +12,6 @@
namespace Symfony\Component\HttpKernel\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RequestContextAwareInterface;
@@ -27,49 +26,41 @@ class LocaleListener implements EventSubscriberInterface
{
private $router;
private $defaultLocale;
- private $locales = array();
public function __construct($defaultLocale = 'en', RequestContextAwareInterface $router = null)
{
$this->defaultLocale = $defaultLocale;
$this->router = $router;
}
- public function onKernelResponse(FilterResponseEvent $event)
+ public function setRequest(Request $request = null)
{
- array_shift($this->locales);
+ if (null === $request) {
+ return;
+ }
- // setting back the locale to the previous value
- $locale = isset($this->locales[0]) ? $this->locales[0] : $this->defaultLocale;
- $request = $event->getRequest();
- $this->setLocale($request, $locale);
+ if ($locale = $request->attributes->get('_locale')) {
+ $request->setLocale($locale);
+ }
+
+ if (null !== $this->router) {
+ $this->router->getContext()->setParameter('_locale', $request->getLocale());
+ }
}
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
-
$request->setDefaultLocale($this->defaultLocale);
- $this->setLocale($request, $request->attributes->get('_locale', $this->defaultLocale));
- array_unshift($this->locales, $request->getLocale());
+ $this->setRequest($request);
}
public static function getSubscribedEvents()
{
return array(
// must be registered after the Router to have access to the _locale
KernelEvents::REQUEST => array(array('onKernelRequest', 16)),
- KernelEvents::RESPONSE => 'onKernelResponse',
);
}
-
- private function setLocale(Request $request, $locale)
- {
- $request->setLocale($locale);
-
- if (null !== $this->router) {
- $this->router->getContext()->setParameter('_locale', $request->getLocale());
- }
- }
}

0 comments on commit 4d44f33

Please sign in to comment.