我正在使用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->getUser()
只是shortcut
$this->get('security.context')->getToken()->getUser()
因此,这意味着您将根据当前的安全 token 获得用户对象。当您要检索实际的登录用户时,它是完美且容易的。
但是,如果您想吸引其他用户,则
fos_user.user_manager
是选择,因为$this->getUser()
具有轻松找到用户并将实现隐藏在后面的方法。它还提供了创建新用户和更新用户的方法。而且,如果您使用ojit_code检索当前登录的用户并对其进行了修改,则应该使用fos用户管理器来更新它们。看看docs了解更多!