にアカウントエンティティを追加し、私は、私が最初の名前とPersonエンティティを作成し、このガイド以下の私の個人的なバンドル内の最後の名前を「http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_forms.html」symfonyは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()オブジェクトを使用して、私のコントローラからログインすることができました