簡體   English   中英

如何使用symfony 3.4設置語言環境

[英]How to set the locale with symfony 3.4

如何使用symfony 3.4(php)更改語言環境?

我在數據庫中為每個用戶保存了語言環境。 現在,他們在此頁面上解釋您應該創建一個事件偵聽器以設置區域設置。 但是它們僅提供一種方法-我將該方法放在哪個類中,以及如何使用我的services.yml將其連接起來?

而且,如果我在使用服務-如何訪問用戶對象以實際獲取要設置的語言環境?

這是docs提供的有關如何創建內核請求偵聽器的示例

在此偵聽器中,您注入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需要接口的類型提示而不是類, 請閱讀文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM