[英]Symfony2 - $this->getUser() vs $this->get('fos_user.user_manager');
我正在使用FOSUserBundle。 这两者有什么区别?
$this->get('fos_user.user_manager');
...和...
$this->getUser();
我发现我在不同的时间使用了上述两种方法,一切正常。
我猜第一个是来自FOS,第二个是默认的,但我猜我应该总是使用同一个。
这是我用过的一段代码:
$user = $this->getUser();
if($user) {
$email = $user->getEmail();
} else {
$email = "no email";
}
..另一个......
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('memberID' => '123'));
...所以我应该为两者使用相同的方法吗?
他们返回不同的对象。 $this->get('fos_user.user_manager')
返回一个FOS\\UserBudle\\Doctrine\\UserManager
对象, $this->getUser()
返回一个FOS\\UserBundle\\Model\\User
对象。 前者处理用户,后者是用户。 所以不,你正在使用它。
两者的不同之处在于保存用户或创建新用户。 如果使用FOSUserBundle,则应始终使用$this->get('fos_user.user_manager')
方法。 这使您可以访问与FOSUserBundle一起使用的updateUser()
函数,以确保它更新您不需要在User模型中显式声明的所有用户属性,例如date_created
和roles
。
该函数与使用Doctrine persist()
然后flush()
模型不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.