[英]Symfony 2.5 / FOSUserBundle Get user id in an EventListener
我正在嘗試在Symfony 2.4中的事件偵聽器中獲取用戶ID,但據我所知,EventListener不是由控制器調用的,所以我無法使用
$這 - >的getUser();
獲得ID的最佳方法是什么?
我考慮過在調用該事件的services.yml中提供它。
感謝您提供的任何幫助或任何文檔。
問候,
在控制器中 , 從symfony 2.1開始 ,您應該可以輕松使用
$user = $this->getUser();
$userId = $user->getId();
或者,您可以從安全上下文中獲取當前登錄的用戶對象
$user = $this->container->get('security.context')->getToken()->getUser();
$userId = $user->getId();
或使用FOSUserBundle服務 (顯然,它是內置方法getUser()的替代方法,如鏈接頁面中的注釋所示)
$userManager = $this->container->get('fos_user.user_manager');
$user = $userManager->findUserByUsername($this->container->get('security.context')->getToken()->getUser());
$userId = $user->getId();
更新
如果您處於事件偵聽器中 ,則需要通過“依賴項注入”將容器注入偵聽器類中以進行訪問。 看看這個答案: https : //stackoverflow.com/a/17022330/3625883
第二次更新
前面的鏈接完全符合您的要求,但我只想注意一件事:通常,注入整個服務容器不是一個好習慣,您應該僅注入security.context。 有關更多信息: https : //stackoverflow.com/a/15922525/3625883
$user_id=$this->getUser()->getId();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.