我正在使用FOS_user
包,当我创建一个用户时,我想将其链接到另一个实体,即公司。我尝试使用以下代码创建一个侦听器:
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess',
);
}
public function onRegistrationSuccess(FormEvent $event) {
}
这工作得很好,我可以访问函数中的$event
。现在,我想访问用户在表单中添加的公司名称。此外,我想创建一个公司并将其绑定到新用户,所以像这样:
$company = new Entity'Company();
$company->setTitle($theInputFromTheForm);
$user->addCompany($company);
我不知道如何访问表单的数据并将公司保存在用户中。使用侦听器是正确的方法吗?
事件FOSUserEvents::REGISTRATION_SUCCESS
收到FormEvent
对象。您可以使用$event->getForm()
所以在你的例子中;
public function onRegistrationSuccess(FormEvent $event) {
$registrationForm = $event->getForm();
$registrationFormData = registrationForm->getData();
}
我最终创建了一个表单类型CompanyType
,它添加了我公司的标题。在我的UserBundle
的RegistrationFormType
中,我添加了一个集合到这个表单类型。我在FOSUserEvents::REGISTRATION_INITIALIZE
上创建了一个侦听器来添加一个空公司。
public function onRegistrationInitialize(UserEvent $event) {
$user = $event->getUser();
$user->addCompany($company);
}