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
我正在使用 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