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

时间:2015-01-02 11:12:00

标签: symfony doctrine-orm fosuserbundle

我正在使用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对象是否明智?

1 个答案:

答案 0 :(得分:3)

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

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