У меня есть один пользовательский LocaleListner, кто упорствует Choosed локаль на базе:Symfony2 локаль не сохраняются по запросу AJAX
class LocaleListener implements EventSubscriberInterface
{
private $defaultLocale;
private $securityContext;
private $em;
public function __construct($defaultLocale, SecurityContext $securityContext, EntityManager $em)
{
$this->defaultLocale = $defaultLocale;
$this->securityContext = $securityContext;
$this->em = $em;
}
static public function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array(
array('onKernelRequest', -50)
),
);
}
public function onKernelRequest(GetResponseEvent $event)
{
if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
return;
}
$request = $event->getRequest();
// Impersonate account check
if (!$request->hasPreviousSession()) {
return;
}
$user = null;
if ($this->securityContext->getToken()) {
$user = $this->securityContext->getToken()->getUser();
}
if ($locale = $request->get('_locale')) {
$request->getSession()->set('_locale', $locale);
if (null !== $user && $user != 'anon.' && $user->getLocale() !== $locale) {
$user->setLocale($locale);
$this->em->persist($user);
$this->em->flush();
}
} else if ($user instanceof User && null !== $user->getLocale()) {
$request->getSession()->set('_locale', $user->getLocale());
}
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
}
}
Это прекрасно работает, но локаль полностью игнорируется, если я позвоню контроллер с запросом AJAX.
Действительно, стандартная локализация - fr. И если я выберу en locale и сделаю запрос ajax, возвращенный шаблон будет переведен на французский, а не на английский.
Как это возможно?
Спасибо.
EDIT.
Вот мой Javascript Ajax вызова (кофе):
refreshUrl = Routing.generate('ticket_index') + location.search
setInterval =>
$.get refreshUrl, { _ajax: 1 }, (data) =>
@tbody.html data
momentFromNow()
, 10000
Я уже пытаюсь добавить _locale параметр на Ajax запроса, не работает.
Обновлено мое сообщение. Я уже пытаюсь добавить параметр _locale в запрос ajax, не работает. – Soullivaneuh
Что я заметил в вашем коде есть строка: KernelEvents :: REQUEST => массив ( массив ('onKernelRequest', -50) ), Обычно в документации и на Symfony 2 книги они используют 18 вместо -50 , Я думаю, вы должны поэкспериментировать с этим номером. –
Не является ли значение локального слушателя по умолчанию? – Soullivaneuh