Ble*_*rre 0 symfony fosuserbundle
我试图在Symfony 2.4中的事件监听器中获取用户ID,但据我所知,EventListener未被控制器调用,因此我无法使用
$这 - >的getUser();
获得身份证的最佳方式是什么?
我想过在调用事件的services.yml中给它.
感谢anyhelp或任何有用的文档.
问候,
在控制器中,您应该能够将symfony 2.1简单地使用
$user = $this->getUser();
$userId = $user->getId();
Run Code Online (Sandbox Code Playgroud)
或者,您可以从安全上下文中获取当前登录的用户对象
$user = $this->container->get('security.context')->getToken()->getUser();
$userId = $user->getId();
Run Code Online (Sandbox Code Playgroud)
或者使用FOSUserBundle服务(显然它是内置方法getUser()的替代品,如链接页面中的注释所示)
$userManager = $this->container->get('fos_user.user_manager');
$user = $userManager->findUserByUsername($this->container->get('security.context')->getToken()->getUser());
$userId = $user->getId();
Run Code Online (Sandbox Code Playgroud)
更新
如果您在事件侦听器中,则需要通过依赖注入将容器注入侦听器类以便执行它.看看这个答案:https://stackoverflow.com/a/17022330/3625883
第二次更新
之前的链接正是你所要求的,但我只想注意一件事:一般来说注入整个服务容器不是一个好习惯,你应该只注入security.context.有关更多信息,请访问:https://stackoverflow.com/a/15922525/3625883
归档时间: |
|
查看次数: |
3488 次 |
最近记录: |