Sonata Admin Bundle 语言环境
Soanta Admin Bundle Locale
我的翻译有问题。我用
- symfony 2.7
- sonata admin-bundle 2.3
我已经创建了交互式登录侦听器,当用户登录应用程序时,我获得了用户语言环境并设置了会话 _locale,但这在 sonata 中被忽略了。
监听器是
class UserLocaleListener {
/**
* @var Session
*/
private $container;
public function __construct(Session $session)
{
$this->session = $session;
}
public function onInteractiveLogin(InteractiveLoginEvent $event)
{
$request = $event->getRequest();
$user = $event->getAuthenticationToken()->getUser();
if (null !== $user->getLocale()) {
$this->session->set('_locale', $user->getLocale());
//$request->setLocale($user->getLocale());
var_dump($request->getSession()->get('_locale'));
}
}
}
在service.yml中添加
app.user_locale_listener:
class: xxxxxx\xxxxxxxx\EventListener\UserLocaleListener
arguments: ["@session"]
tags:
- { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin }
我的错误在哪里?
语言环境是根据请求设置的,不会 "stick" ,所以每次请求都会再次成为默认语言环境,除非你这样做:
http://symfony.com/doc/current/cookbook/session/locale_sticky_session.html
Wich 将根据每个请求从会话中获取语言环境,并在当前请求中设置它。
(确保 LocaleListener 的优先级低于您的 UserLocaleListener,以便它在它之后运行)
我的翻译有问题。我用
- symfony 2.7
- sonata admin-bundle 2.3
我已经创建了交互式登录侦听器,当用户登录应用程序时,我获得了用户语言环境并设置了会话 _locale,但这在 sonata 中被忽略了。
监听器是
class UserLocaleListener {
/**
* @var Session
*/
private $container;
public function __construct(Session $session)
{
$this->session = $session;
}
public function onInteractiveLogin(InteractiveLoginEvent $event)
{
$request = $event->getRequest();
$user = $event->getAuthenticationToken()->getUser();
if (null !== $user->getLocale()) {
$this->session->set('_locale', $user->getLocale());
//$request->setLocale($user->getLocale());
var_dump($request->getSession()->get('_locale'));
}
}
}
在service.yml中添加
app.user_locale_listener:
class: xxxxxx\xxxxxxxx\EventListener\UserLocaleListener
arguments: ["@session"]
tags:
- { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin }
我的错误在哪里?
语言环境是根据请求设置的,不会 "stick" ,所以每次请求都会再次成为默认语言环境,除非你这样做:
http://symfony.com/doc/current/cookbook/session/locale_sticky_session.html
Wich 将根据每个请求从会话中获取语言环境,并在当前请求中设置它。
(确保 LocaleListener 的优先级低于您的 UserLocaleListener,以便它在它之后运行)