我正在使用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
对象是否明智?
答案 0 :(得分:3)
我认为更好的方法是覆盖FosUser控制器操作(例如注册)并将代码放在特定服务中。
symfony2 doc提供了一个很好的示例:http://symfony.com/doc/current/cookbook/bundles/inheritance.html