class LocaleListener in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/http-kernel/EventListener/LocaleListener.php \Symfony\Component\HttpKernel\EventListener\LocaleListener
Initializes the locale based on the current request.
This listener works in 2 modes:
- 2.3 compatibility mode where you must call setRequest whenever the Request changes.
- 2.4+ mode where you must pass a RequestStack instance in the constructor.
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Symfony\Component\HttpKernel\EventListener\LocaleListener implements EventSubscriberInterface
Expanded class hierarchy of LocaleListener
1 file declares its use of LocaleListener
- LocaleListenerTest.php in vendor/
symfony/ http-kernel/ Tests/ EventListener/ LocaleListenerTest.php
File
- vendor/
symfony/ http-kernel/ EventListener/ LocaleListener.php, line 32
Namespace
Symfony\Component\HttpKernel\EventListenerView source
class LocaleListener implements EventSubscriberInterface {
private $router;
private $defaultLocale;
private $requestStack;
/**
* RequestStack will become required in 3.0.
*/
public function __construct($defaultLocale = 'en', RequestContextAwareInterface $router = null, RequestStack $requestStack = null) {
$this->defaultLocale = $defaultLocale;
$this->requestStack = $requestStack;
$this->router = $router;
}
/**
* Sets the current Request.
*
* This method was used to synchronize the Request, but as the HttpKernel
* is doing that automatically now, you should never call it directly.
* It is kept public for BC with the 2.3 version.
*
* @param Request|null $request A Request instance
*
* @deprecated since version 2.4, to be removed in 3.0.
*/
public function setRequest(Request $request = null) {
@trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);
if (null === $request) {
return;
}
$this
->setLocale($request);
$this
->setRouterContext($request);
}
public function onKernelRequest(GetResponseEvent $event) {
$request = $event
->getRequest();
$request
->setDefaultLocale($this->defaultLocale);
$this
->setLocale($request);
$this
->setRouterContext($request);
}
public function onKernelFinishRequest(FinishRequestEvent $event) {
if (null === $this->requestStack) {
return;
// removed when requestStack is required
}
if (null !== ($parentRequest = $this->requestStack
->getParentRequest())) {
$this
->setRouterContext($parentRequest);
}
}
private function setLocale(Request $request) {
if ($locale = $request->attributes
->get('_locale')) {
$request
->setLocale($locale);
}
}
private function setRouterContext(Request $request) {
if (null !== $this->router) {
$this->router
->getContext()
->setParameter('_locale', $request
->getLocale());
}
}
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::FINISH_REQUEST => array(
array(
'onKernelFinishRequest',
0,
),
),
);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LocaleListener:: |
private | property | ||
LocaleListener:: |
private | property | ||
LocaleListener:: |
private | property | ||
LocaleListener:: |
public static | function |
Returns an array of event names this subscriber wants to listen to. Overrides EventSubscriberInterface:: |
|
LocaleListener:: |
public | function | ||
LocaleListener:: |
public | function | ||
LocaleListener:: |
private | function | ||
LocaleListener:: |
public | function | Sets the current Request. | |
LocaleListener:: |
private | function | ||
LocaleListener:: |
public | function | RequestStack will become required in 3.0. |