Symfony 在创建时将新的FOSUserBundle用户添加到默认组
我正在建立我的第一个严肃的Symfony2项目。我正在为我的用户/组管理扩展FOSUserBundle,我希望自动将新用户添加到默认组。 我想您只需要像这样扩展用户实体构造函数:Symfony 在创建时将新的FOSUserBundle用户添加到默认组,symfony,fosuserbundle,Symfony,Fosuserbundle,我正在建立我的第一个严肃的Symfony2项目。我正在为我的用户/组管理扩展FOSUserBundle,我希望自动将新用户添加到默认组。 我想您只需要像这样扩展用户实体构造函数: /** * Constructor */ public function __construct() { parent::__construct(); $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->groups = new \Doctrine\Common\Collections\ArrayCollection();
// Get $defaultGroup entity somehow ???
...
// Add that group entity to my new user :
$this->addGroup($defaultGroup);
}
但我的问题是,首先如何获得$defaultGroup实体
我尝试从实体内部使用实体管理器,但后来我意识到这很愚蠢,Symfony抛出了一个错误。我在谷歌上搜索了一下,但没有找到真正的解决办法,除了可能。。。虽然这对我来说似乎很不清楚。你没有说你的用户是如何创建的。当一些管理员创建用户或您有自定义注册操作时,您可以在控制器的操作中设置组
$user->addGroup($em->getRepository('...')->find($group_id));
但是,如果使用fosuserbundles内置注册,则必须连接到控制器:并使用事件侦听器。好的,我开始实施的想法 我做的第一件事是在composer.json中将FOSUserBundle更新为2.0.*@dev,因为我使用的是v1.3.1,它没有实现FOSUserEvents类。这是订阅我的注册活动所必需的
//composer.json
“friendsofsymfony/用户包”:“2.0.*@dev”,
然后我添加了一项新服务:
在XML中,我告诉服务我需要通过参数doctor.orm.entity\u manager
访问doctor。然后,我创建了侦听器:
//Moskito/Bundle/UserBundle/EventListener/UserCreationListener.php
你答案的第二部分看起来像我想做的。我将尝试实现它,并将答案作为解决方案发布在这里。