如何使用symfony 3.4设置语言环境

时间:2018-06-18 08:46:10

标签: php symfony locale symfony-3.4

如何使用symfony 3.4(php)更改语言环境?

我为我的数据库中的每个用户保存了语言环境。现在在this page上他们解释说你应该创建一个事件监听器来设置语言环境。但是它们只提供了一种方法 - 我在哪个类中使用此方法,如何使用我的services.yml连接它?

如果我在服务中 - 如何访问我的用户对象以实际获取我想要设置的语言环境?

1 个答案:

答案 0 :(得分:3)

这是example provided by the docs on how to create an kernel request listener

在此侦听器中,您将注入TokenStorage服务器,然后该服务器将为您提供当前令牌,并为其提供当前登录的附加用户。然后,您将从用户处获取区域设置并将其设置为请求。

use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;

class RequestListener
{
    private $tokenStorage;

    public function __construct(TokenStorageInterface $tokenStorage)
    {
        $this->tokenStorage = $tokenStorage;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        $user = $this->tokenStorage->getToken()->getUser();
        $request = $event->getRequest();
        $request->setLocale($user->getLocale());
    }  
}

要理解,为什么Symfony需要接口的类型提示而不是类please read the documentation