2016-05-04 78 views
0

我是Symfony的新手,現在我已經瞭解了基礎知識,現在我正在潛入事件和事件監聽器。Symfony2 - 試圖理解FOSUserBundle註冊確認

我明白,當通過FOSUserBundle用戶登記有一些得到派出裏面registerAction()

  1. REGISTRATION_INITIALIZE
  2. REGISTRATION_SUCCESS
  3. REGISTRATION_COMPLETED

三個事件這是registerAction代碼

public function registerAction(Request $request) 
    { 
     /** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */ 
     $formFactory = $this->get('fos_user.registration.form.factory'); 
     /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */ 
     $userManager = $this->get('fos_user.user_manager'); 
     /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */ 
     $dispatcher = $this->get('event_dispatcher'); 

     $user = $userManager->createUser(); 
     $user->setEnabled(true); 

     $event = new GetResponseUserEvent($user, $request); 
     $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event); 

     if (null !== $event->getResponse()) { 
      return $event->getResponse(); 
     } 

     $form = $formFactory->createForm(); 
     $form->setData($user); 

     $form->handleRequest($request); 

     if ($form->isValid()) { 
      $event = new FormEvent($form, $request); 
      $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); 

      $userManager->updateUser($user); 

      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; 
     } 

     return $this->render('FOSUserBundle:Registration:register.html.twig', array(
      'form' => $form->createView(), 
     )); 
    } 

現在config.yml裏面我們可以設置,以便用戶需要在他們的帳戶被激活,以確認他們的電子郵件地址,這是一個聽,我迷路

fos_user: 
    registration: 
     confirmation: 
      enabled: true 

我在看EmailConfirmationListener配置到REGISTRATION_SUCCESS和驗證碼,我什麼也沒找到,告訴我它是如何讀取confirmationconfig.yml

我會很感激,如果有人可以在此監聽器如何觸發O系給我解​​釋一下里面n confirmationenabled狀態。

回答

0

symfony doc解釋

爲了加載服務配置,你必須創建一個 依賴注入(DI)擴展您的包

我確實在資源庫中搜索,並如you can seeFOSUserExtension.php文件加載包含偵聽器聲明的服務文件。

+0

美麗,正是我錯過了。非常感謝 :) – Saadia