1)fosuserbundle注册重定向到确认的bydefault
if (null === $response = $event->getResponse()) {
$url = $this->generateUrl('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
我想使用REST调用registerAction,以覆盖此行为。我想返回确认消息,而不是重定向。
filterUserserSponseEvent不允许设置响应,没有" setResponse"方法。
2)fosuserbundle的emailConfirmationListener也重定向到Checkemail Action
$url = $this->router->generate('fos_user_registration_check_email');
$event->setResponse(new RedirectResponse($url));
我也想覆盖这种行为。我可以通过使用相同的ID" fos_user.listener.email_confirnation"创建我的emailConfirmationListener服务来做到这一点,并这样做
$response = new Response($this->translator->trans('registration.check_email', array(
'%email%' => $user->getEmail()), 'FOSUserBundle'));
$event->setResponse($response);
,但是问题现在在配置下不起作用。无论以下配置如何,它总是发送确认电子邮件。
fos_user
registration
confirmation
enabled : false
我看不到EmailConfirmatimationlisterner中的任何代码,可以检查该配置是否已启用。它在哪里检查,为什么要覆盖侦听器停止配置工作?
对于您的第一个问题,设置自己的重定向响应应在FOSUserEvents::REGISTRATION_SUCCESS
而不是FOSUserEvents::REGISTRATION_COMPLETED
上完成。这就是为什么您从捆绑包粘贴的代码在创建自己的RedirectResponse之前是否设置了响应的原因。
对于您的第二个问题,配置设置的行为是注册确认侦听器或跳过在捆绑包中注册。如果您注册自己的听众,则必须控制自己的听众的注册。