UniqueValidator
要求validateUniqueUserManager
类的方法。您可以扩展类和修改函数来检查用户
$this->findUserByEmail($user->getEmail());
编辑
对于第二个问题,你必须覆盖UserManager
类的UpdateUser
方法。
/**
* Updates a user.
*
* @param UserInterface $user
* @param Boolean $andFlush Whether to flush the changes (default true)
*/
public function updateUser(UserInterface $user, $andFlush = true)
{
$existsUser = $this->findUserByEmail($user->getEmail());
$this->updateCanonicalFields($user);
$this->updatePassword($user);
if($existsUser && null === $user->getId()){
$user->setId($existsUser->getId());
$this->em->merge($user);
} else{
$this->em->persist($user);
}
if ($andFlush) {
$this->em->flush();
}
}
好的,但我应该如何着手扩展班级?我创建了一个自定义的'UserManager'类,但我不知道要覆盖原来的FOS'UserManager'类。我将它保存到我的包中,链接到原始类,使用FOS \ UserBundle \ Entity \ UserManger作为BaseUserManager,但似乎不起作用。 – Manu 2012-04-02 08:56:13
检查[this]的第二个解决方案(https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/logging_by_username_or_email.md)doc条目。 – 2012-04-02 09:32:24
谢谢,它的工作。 – Manu 2012-04-02 14:14:34