2017-03-18 18 views
1

にアカウントエンティティを追加し、私は、私が最初の名前とPersonエンティティを作成し、このガイド以下の私の個人的なバンドル内の最後の名前を「http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_forms.htmlsymfonyはfosuserbundle私はFOSUserBundleとsymfonyプロジェクトを持っている人のエンティティ

をにformTypeを拡張しました住所...、このようなそのにformType作成:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('firstName', TextType::class) 
      ->add('lastName', TextType::class) 
      ->add('adress', TextType::class) 
      ->add('account', AccountType::class) ; 
} 

アカウントエンティティがFOSUserBundle

その後

私は人のためにCRUDを生成するためのユーザークラスがあるが、newAction()は次のようになります。

public function newAction(Request $request) 
{ 
    $person = new Person(); 
    $form = $this->createForm('AppBundle\Form\PersonType', $person); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     $person->getAccount()->setEnabled(1); //i'm doing this because it's not automatic 
     $em->persist($person->getAccount()); 
     $em->persist($person); 
     $em->flush($person); 

     return $this->redirectToRoute('fos_user_security_login'); // redirecting to the login page because it's not done automatically 
    } 
    return $this->render('person/new.html.twig', array(
     'person' => $person, 
     'form' => $form->createView(), 
    )); 
} 

2 entitysは、彼らは両方とも、データベースに永続化されているこのコードで、OneToOne関係を持っていると私は通常、ここで

は私FOSUerBundle構成でログインするためのユーザー名とパスワードを使用することができます。

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: AppBundle\Entity\Account 
    from_email: 
     address: "%mailer_user%" 
     sender_name: "%mailer_user%" 
    registration: 
     form: 
      type: AppBundle\Form\AccountType 

私は、デフォルトのFOSUserBundle登録を使用しているときに起こるように、登録後に自動的にログインするようにしたいと思います。

私は$ person-> getAccount()オブジェクトを使用して、私のコントローラからログインすることができました

答えて

0

を多くのものを試していないが、あなたの答えには成功

ありがとう:

すべてのIちょうど私のコントローラにいくつかのコードをコピーしhttps://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Controller/RegistrationController.php#L78

:デフォルトのコントローラのようREGISTRATION_COMPLETEDイベントを送出されなければなりません

これにより、認証がトリガーされます。https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/AuthenticationListener.php

関連する問題