Symfony FOSUserBundle - 创建自定义存储库以保留用户

Symfony FOSUserBundle - Create custom repository to persist users

我正在使用 FOSUserBundle 来管理 symfony2 项目中的用户。

由于不推荐使用容器,我的问题是如何扩展 FOSUserBundle 以便能够创建这样的自定义保存方法,例如:

class UserRepository extends EntityRepository
{                                            
    public function registration(array $data)                               
    {     
    // example only
    $userManager = $this->container->get('fos_user.user_manager');      
    //$em = $this->container->get('doctrine')->getEntityManager();        

    //$userUtils = $this->container->get('fos_user.util.token_generator');

    $user = $userManager->createUser();                                 

    $user->setFirstName($data['first_name']);                           
    $user->setLastName($data['last_name']);                             
    $user->setEmail($data['user_email']);                               
    $user->setUsername($data['user_email']);                            
    $user->setPlainPassword($data['user_password']);                    
    $user->setEnabled(false);                                           
    $user->setConfirmationToken($userUtils->generateToken());           
    $user->addRole('ROLE_USER');                                        

    $em->persist($user);                                                

    $em->flush();                                                       
}

使用该方法时在控制器中传递 $userManager$userUtils 对象会不会很聪明?

我认为最好覆盖 FosUser 控制器操作(例如注册)并将您的代码放在特定服务中。

symfony2 文档提供了一个很好的示例:http://symfony.com/doc/current/cookbook/bundles/inheritance.html