MyEventエンティティとMyEventScheduleエンティティをOneToOenの関係で持たせています。
MyEventを作成する時に同じフォームから一緒にスケジュールも作成したいのですが、うまくできません。
php
1# マイイベントエンティティ 2 3/** 4 * @ORM\Entity(repositoryClass="App\Repository\MyEventRepository") 5 * @ORM\HasLifecycleCallbacks 6 */ 7class MyEvent 8{ 9 /** 10 * @ORM\Id() 11 * @ORM\GeneratedValue() 12 * @ORM\Column(type="integer") 13 */ 14 private $id; 15 16 /** 17 * @ORM\OneToOne(targetEntity="App\Entity\MyEventSchedule", cascade={"persist", "remove"}) 18 */ 19 private $myEventSchedule; 20 21 public function getId(): ?int 22 { 23 return $this->id; 24 } 25 26 public function getMyEventSchedule(): ?MyEventSchedule 27 { 28 return $this->myEventSchedule; 29 } 30 31 public function setMyEventSchedule(?MyEventSchedule $myEventSchedule): self 32 { 33 $this->myEventSchedule = $myEventSchedule; 34 35 return $this; 36 } 37 38}
php
1# マイイベントスケジュールエンティティ 2 3/** 4 * @ORM\Entity(repositoryClass="App\Repository\MyEventScheduleRepository") 5 * @ORM\HasLifecycleCallbacks 6 */ 7class MyEventSchedule 8{ 9 /** 10 * @ORM\Id() 11 * @ORM\GeneratedValue() 12 * @ORM\Column(type="integer") 13 */ 14 private $id; 15 16 /** 17 * @ORM\OneToOne(targetEntity="App\Entity\MyEvent", cascade={"persist", "remove"}) 18 * @ORM\JoinColumn(nullable=false) 19 */ 20 private $myEvent; 21 22 public function getId(): ?int 23 { 24 return $this->id; 25 } 26 27 public function getMyEvent(): ?MyEvent 28 { 29 return $this->myEvent; 30 } 31 32 public function setMyEvent(MyEvent $myEvent): self 33 { 34 $this->myEvent = $myEvent; 35 36 return $this; 37 } 38}
php
1class MyEventType extends AbstractType 2{ 3 public function buildForm(FormBuilderInterface $builder, array $options) 4 { 5 $builder 6 ->add('myEventSchedule', MyEventScheduleType::class, [ 7 'required' => true, 8 ]) 9 ; 10 } 11 12 /** 13 * {@inheritdoc} 14 */ 15 public function configureOptions(OptionsResolver $resolver): void 16 { 17 $resolver->setDefaults([ 18 'data_class' => MyEvent::class, 19 ]); 20 } 21}
php
1/** 2 * @Route("admin/my/event") 3 */ 4class MyEventController extends AbstractController 5{ 6 7 /** 8 * @Route("/new", name="admin_my_event_new", methods={"GET","POST"}) 9 */ 10 public function new(Request $request): Response 11 { 12 $myEvent = new MyEvent(); 13 14 $form = $this->createForm(MyEventType::class, $myEvent); 15 $form->handleRequest($request); 16 17 18 if ($form->isSubmitted() && $form->isValid()) { 19 $entityManager = $this->getDoctrine()->getManager(); 20 $entityManager->persist($myEvent); 21 $entityManager->flush(); 22 23 $this->addFlash('success', 'イベントを登録しました'); 24 25 return $this->redirectToRoute('admin_my_event_index'); 26 } 27 28 return $this->render('admin/my_event/new.html.twig', [ 29 'my_event' => $myEvent, 30 'form' => $form->createView(), 31 ]); 32 } 33
コントローラーにスケージュールの保存処理を書く必要があるのでしょうか?
また、フォームが間違っているのでしょうか?
どなたか教えていただけないしょうか?
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。