[英]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.