我UserLocaleSubscriber
从 Symfony 文档中获得了用户切换语言环境的信息。但是我的管理员用户存储在“内存中”,并且InMemoryUser
该类没有该getLocale()
方法。
我如何才能仅为用户User
实体运行此订阅者。我试过isGranted()
但无法让它工作。
class UserLocaleSubscriber implements EventSubscriberInterface
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
public function onInteractiveLogin(InteractiveLoginEvent $event)
{
$user = $event->getAuthenticationToken()->getUser();
if (null !== $user->getLocale()) {
$this->session->set('_locale', $user->getLocale());
}
}
public static function getSubscribedEvents()
{
return [
SecurityEvents::INTERACTIVE_LOGIN => 'onInteractiveLogin',
];
}
}