不過的this和also this另一繼續:Symfony2中 - 嵌入式形式擦拭孩子的數據
所以,我能初步顯示包含博客帖子形式和它相關的評論。問題是,如果我編輯一些BlogPost信息並保存,它會將我的評論全部刪除全部,無論它們是否與即 BlogPost相關。不好。
我的大部分相關代碼都在上面的第二個鏈接中,所以我在這裏不再重複。但是,我會添加我的控制器和視圖中的內容。
控制器:
public function EditBlogAction($id)
{
$request = $this->get('request');
$em = $this->get('doctrine')->getManager();
$blogPost = $em->getRepository('Acme\SiteBundle\Entity\BlogPost')->find($id);
$comments = $blogPost->getComments();
$form = $this->createForm(new BlogPostType(), $blogPost);
if ($request->getMethod() == 'POST') {
$form->bind($request);
foreach ($comments as $comment) {
$em->persist($comment);
}
$em->persist($blogPost);
$em->flush();
$em->clear();
}
return $this->render('SiteBundle:Site:editblog.html.twig',array('blogpost' => $blogPost, 'form' => $form->createView()));
}
editblog.html.twig:
<form action='{{ path('_admin_blog_edit', { 'id':blogpost.getId }) }}' method='post' enctype="multipart/form-data">
{{ form_widget(form.title) }}
{# other blog post fields #}
{% for comment in form.comments %}
{{ comment.commentBody }}
{% endfor %}
<input type="submit" />
我不明白爲什麼節約的博文信息將消滅任何評論,我們不屬於那個特定職位單獨評論。
從你的第二篇文章中,我看到你在'Comment'關係上使用'cascade = {「all」},orphanRemoval = true'。如果你在你的控制器中刪除'$ em-> persist($ comment)'並用'cascade = {「persist」}'替換'cascade = {「all」}'? – cheesemacfly
太棒了,做到了!讓你的評論一個答案,我會upvote /標記爲已解決 –
在我發佈答案之前,如果你保留'cascade = {「all」}'? – cheesemacfly