2016-05-04 15 views
0

私はSymfonyを初めて使っています。私はかなり基本的なことを理解しています。今はイベントとイベントのリスナーにダイビングしています。Symfony2 - FOSUserBundleを理解しようとしています。登録確認

私はこれが registerActionコード

ある registerAction()

  1. REGISTRATION_INITIALIZE
  2. REGISTRATION_SUCCESS
  3. REGISTRATION_COMPLETED

内派遣を受ける3つのイベントがあるときに、ユーザー登録FOSUserBundleを経由していることを理解

私たちは、セットアップの設定をすることができますconfig.yml内部今

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(), 
     )); 
    } 

ユーザーが自分のアカウントがアクティブになる前に、自分のメールアドレスを確認するために必要な、私は私がリスニングするEmailConfirmationListenerで探しています

fos_user: 
    registration: 
     confirmation: 
      enabled: true 

を迷うところこれがされるようにREGISTRATION_SUCCESSに、誰かがこのリスナーをベースOをトリガーする方法を私に説明できるかどうconfirmation

config.ymlに、私は本当に感謝します読んでいるか私に指示、私は何を見つけていないのです。このコードの内部n confirmationenabledステータス。

答えて

0

symfony docは、サービス構成をロードするために

を説明し、あなたのバンドル

ため 依存性注入(DI)拡張を作成する必要があり、私は、リポジトリ内の検索を行なったし、 you can seeとして、FOSUserExtension.phpファイルは、リスナー宣言を含むサービスファイルをロードします。

+0

美しく、まさに私が欠けていたもの。どうもありがとう :) – Saadia

関連する問題