sko*_*oft 36 symfony fosuserbundle
我正在使用FOSUserBundle来验证我的用户.
我正在尝试获取Controller内的用户对象来注册一个行程,我应该在保存之前将用户对象添加到此Trip.
我没有找到如何做到这一点因为我在symfony doc中找到它的下一个方法:
$user = $this->container->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
将用户名呈现为字符串,但我需要整个对象.
目前,我使用此方法,但它无法正常工作.
$username = $this->container->get('security.context')->getToken()->getUser();
$em = $this->container->get('doctrine')->getEntityManager();
$user = $em->getRepository('SiteUtilisateurBundle:Utilisateur')->find($username);
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确地做到这一点?
Moh*_*nam 72
我认为拉蒙是对的.您已拥有用户对象.
同样在Symfony> 2.1.x中你可以使用
$this->getUser();
Run Code Online (Sandbox Code Playgroud)
在控制器内部.
Ram*_*iss 15
该getUser
方法的文档指出:
要么返回实现__toString()的对象,要么返回原始字符串.
如果我们在这里查看FOS\UserBundle\Model\User
类(FOSUserBundle使用的基本用户类),我们可以看到它确实有一个方法:__toString
public function __toString()
{
return (string) $this->getUsername();
}
Run Code Online (Sandbox Code Playgroud)
我认为你实际上得到了User
对象,但因为它实现了一个__toString
方法,所以它可以直接在模板中呈现.
在Twig中你可以使用:
{{ dump(user) }}
Run Code Online (Sandbox Code Playgroud)
要查看您拥有的对象类型.但你实际上是在使用一个对象,而不是一个字符串.
小智 9
解:
$userManager = $this->container->get('fos_user.user_manager');
$user = $userManager->findUserByUsername($this->container->get('security.context')
->getToken()
->getUser())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66870 次 |
最近记录: |