簡體   English   中英

如何覆蓋確認注冊重定向以及FOSUserBundle檢查啟用了電子郵件確認的位置?

[英]How to override confirm registration redirect and where email confirmation enabled is checked by FOSUserBundle?

1)FOSUserBundle注冊默認重定向到ConfirmedAction

        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_SUCCESS而不是FOSUserEvents::REGISTRATION_COMPLETED上設置自己的重定向響應。 這就是為什么您從分發包粘貼的代碼在創建自己的RedirectResponse之前先檢查是否設置了響應。

對於第二個問題,配置設置的行為是注冊確認偵聽器或跳過捆綁軟件中的注冊。 如果注冊自己的偵聽器,則必須在自己的側面控制自己的偵聽器的注冊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM