我正在尝试为每个新注册用户执行多项操作,因此我首先想到的是 evnets 。不幸的是,我发现版本1.3.x不存在注册事件(那里没有任何名为events的文件夹)。 这是主版本:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/FOSUserEvents.php
我应该做的最简单的事情是什么?
答案 0 :(得分:1)
升级到2.0版本不是我假设的选项吗?我正在考虑同样的问题,因为我不想升级,因为SonataAdmin尚未准备好它:https://github.com/sonata-project/SonataUserBundle/issues/322。
由于1.3.x版本没有事件,根据您的需要,您可以只是扩展控制器并覆盖您需要更改的内容,或者如果您想要更多地控制表单,您可以创建formType或处理程序并将它们注入FOSUserBundle:
namespace MyVendor\MyBundle\Form\Handler;
use FOS\UserBundle\Form\Handler\RegistrationFormHandler as BaseRegistrationFormHandler;
class RegistrationFormHandler extends BaseRegistrationFormHandler
{
protected function createUser()
{
$user = $this->userManager->createUser();
$user->addRole("ROLE_USER_PRO");
$user->setUsername("generate a value here");
$user->setPlainPassword("also a generated value");
return $user;
}
然后告诉FOSUser使用您的特殊处理程序(您必须将上述声明为新服务):
fos_user:
registration:
form:
handler: mybundle.registration.form.handler