2017-05-18 16 views
0

fosuserbundleを使用して自分のコントローラーでユーザーを作成すると、ユーザーに確認トークン(データベース内)がありません。どのように私はこれを作成できますか?fosuserbundle作成ユーザーの確認トークン

 $userManager = $this->get('fos_user.user_manager'); 
     $userCreate = $userManager->createUser(); 
     $userCreate->setUsername($user->getUsername()); 
     $userCreate->setEmail($user->getEmail()); 
     $userCreate->setEmailCanonical($user->getEmail()); 
     $userCreate->setPlainPassword($user->getPassword()); 
     $userCreate->setEnabled(true); 
     $userManager->updateUser($userCreate, true); 

これは正常ですか?

+0

は、なぜあなたはあなたのコントローラを使用していますか? – COil

+0

こんにちは私はいくつかのフィールドとcustumいくつかのアクションを追加するため – eldiablo62

+1

この場合、コントローラをオーバーライドしないでイベントを使用する必要があります:http://symfony.com/doc/master/bundles/FOSUserBundle/controller_events.html – COil

答えて

1

確認トークンがあなたの例電子メールの設定では、このイベントがディスパッチされたときに、イベントリスナーがトークンを提供し、作成したユーザーがそのアドレスを確認できるようにするために電子メールを送信しなければならない、イベントREGISTRATION_SUCCESSを使用して

を作成することですfosUserが設定されます。終了すると、確認トークンと電子メールが機能します。そこ

外観:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/EmailConfirmationListener.php

/** 
* @param FormEvent $event 
*/ 
public function onRegistrationSuccess(FormEvent $event) 
{ 
    /** @var $user \FOS\UserBundle\Model\UserInterface */ 
    $user = $event->getForm()->getData(); 
    $user->setEnabled(false); 
    if (null === $user->getConfirmationToken()) { 
     $user->setConfirmationToken($this->tokenGenerator->generateToken()); 
    } 
    $this->mailer->sendConfirmationEmailMessage($user); 
    $this->session->set('fos_user_send_confirmation_email/email', $user->getEmail()); 
    $url = $this->router->generate('fos_user_registration_check_email'); 
    $event->setResponse(new RedirectResponse($url)); 
} 
+0

あなたの説明のためにありがとう:) – eldiablo62