私の Symfony2 プロジェクトでは、いくつかのエンティティーとかなり古典的な 1:* 関係を持っています (NDC のせいで、それらが実際に何であるかは言えませんが、BlogPost と Comments と呼びましょう)。私は、既存のコメントを編集するために現在存在するフォームを変更して、BlogPost の特定の側面も変更できるようにする任務を負っています。具体的には、Symfony2 と Doctrine がデータ バインディングをどのように処理するかについて、どうすればよいか完全にはわかりません。
現在、フォームにデータを入力してバインドします (罪のない人を保護するための疑似コード):
Grab the BlogPost based on the incoming request ID
Grab all Comments related to BlogPost
$form = $this->createForm(new CommentsType(), array('comments' => $comments));
if ($request->getMethod() == "POST")
{
$form->bind($request);
foreach($comments as $comment) {
$doctrine->persist($comment);
}
}
return $this->render('blah.html.twig', array('blog' => $blogPost, 'comments' => $comments, 'form' => $form->createView());
ご覧のとおり、既に BlogPost をビューに送信しています。そして、CommentsType クラスに含めることでフォームに追加できることを知っています。すべてを適切にデータバインドする方法がわかりません。