Ich habe ein Forum mit Themen, wo jedes Thema von anderen Benutzern kommentiert werden kann. Die Beziehung i erstellt ist:Wie erhalte ich die aktuelle ID aus dem spezifischen Thema?
class Comment
{
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Topic", inversedBy="comments")
*/
private $topic;
}
Und die Klasse Thema:
class Topic
{
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Comment", mappedBy="topic")
* @ORM\JoinColumn(name="comment_id", referencedColumnName="id")
*/
private $comments;
}
Das Problem ist, dass, wenn ich einen Kommentar zu erstellen, die topic_id Spalte in der Tabelle Kommentare null ist. Ich bin mir nicht sicher, wie ich die aktuelle Topic-ID abrufen und auf den Kommentar setzen soll. Hier ist meine addCommentAction() Funktion im Comment:
/**
* @Route("/comment/add", name="comment_add")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function addCommentAction(Request $request)
{
$comment = new Comment();
$form = $this->createForm(CommentType::class, $comment);
$form->handleRequest($request);
if ($form->isValid()) {
$comment->setDateCreated(new \DateTime());
$em = $this->getDoctrine()->getManager();
$em->persist($comment);
$em->flush();
$this->addFlash(
'notice',
'Comment Added Successfully !'
);
}
return $this->render('comments/comment.add.html.twig', array(
'commentsForm' => $form->createView()
));
}
Der Pfad im Zweig Vorlage:
<a href="{{ path('comment_add') }}" class="btn btn-lg btn-default">Leave a Comment</a>
Ich denke, Sie sollten 'topic_id' über versteckten Eingang in Ihrem Kommentar oder per URL GET-Parameter (von action-Attribute des Formulars) übergeben. Wenn Sie das Formular in der gleichen Aktion rendern, mit der Sie es bearbeiten, benötigen Sie die Themen-ID in der URL trotzdem. –