Php 如何覆盖确认注册重定向以及FOSUserBundle在何处检查启用电子邮件确认?

Php 如何覆盖确认注册重定向以及FOSUserBundle在何处检查启用电子邮件确认?,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,默认情况下,1 FOSUserBundle注册重定向到确认 if (null === $response = $event->getResponse()) { $url = $this->generateUrl('fos_user_registration_confirmed'); $response = new RedirectResponse($url); } $dispatcher

默认情况下,1 FOSUserBundle注册重定向到确认

        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时,我希望覆盖此行为。我想返回确认消息,而不是重定向

FilterUserResponseEvent不允许设置响应,没有setResponse方法

2 FOSUserBundle的EmailConfirmationListener还重定向到checkEmail操作

    $url = $this->router->generate('fos_user_registration_check_email');
    $event->setResponse(new RedirectResponse($url));
我也要克服这种行为。我可以通过创建具有相同id fos_user.listener.email_confirmation的EmailConfirmationListener服务来实现这一点

$response = new Response($this->translator->trans('registration.check_email', array(
                '%email%' => $user->getEmail()), 'FOSUserBundle'));
        $event->setResponse($response);
但问题在于,现在的配置不起作用。无论以下配置如何,它始终发送确认电子邮件

fos_user
   registration 
       confirmation
           enabled : false

我在EmailConfirmationListerner中看不到任何检查此配置是否已启用的代码。检查了哪里,为什么覆盖侦听器会停止配置工作?

对于第一个问题,应该在FOSUserEvents::REGISTRATION\u成功时设置自己的重定向响应,而不是在FOSUserEvents::REGISTRATION\u完成时设置。这正是为什么您从包中粘贴的代码在创建自己的重定向响应之前检查是否设置了响应

对于第二个问题,配置设置的行为是注册确认侦听器或跳过在包中的注册。如果你注册了自己的监听器,你必须控制自己的监听器在你这边的注册