[英]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.