0

私の 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 クラスに含めることでフォームに追加できることを知っています。すべてを適切にデータバインドする方法がわかりません。

4

1 に答える 1

2

がある場合は$blogPost、コメントと同じように永続化してください。また、最後にフラッシュします。

$form = $this->createForm(new CommentsType(), array('comments' => $comments));

if ($request->getMethod() == "POST")
{
    $form->bind($request);

    foreach($comments as $comment) {
        $doctrine->persist($comment);
    }
    $doctrine->persist($blogPost);
    $doctrine->flush();
}

return $this->render('blah.html.twig', array('blog' => $blogPost, 'comments' => $comments, 'form' => $form->createView());
于 2013-04-12T17:45:43.173 に答える