В системе комментариев CRUD, которую я добавляю к сообщениям, у меня нет проблем с изменением / удалением указанного комментария путем получения сообщения идентификатора и комментария. Вот метод, который используется (который также используется для создания комментария):
/**
* @Route("{id}/create", name="createComment")
* @Route("{id}/{comment}/modif", name="modifComment", defaults={"comment"=1}, methods="GET|POST")
*/
public function modification(FilmRepository $film, Comment $comment = null, Request $req, EntityManagerInterface $em, $id)
{
if(!$comment) {
$comment = new Comment();
}
$film = $em->getRepository(Film::class)->findOneBy(array('id' => $id));
$user = $this->getUser();
$form = $this->createForm(CommentType::class, $comment);
$form->handleRequest($req);
dump($film);
dump($comment);
if($form->isSubmitted() && $form->isValid()) {
$comment->setAuthor($user);
$comment->setFilm($film);
$comment->setCreatedAt(new \DateTime());
$em->persist($comment);
$em->flush();
$this->addFlash('success', 'L\'action a bien été effectuée');
return $this->redirectToRoute('home');
}
return $this->render('comment/modif.html.twig', [
"comment" => $comment,
"form" => $form->createView()
]);
}
Проблема возникает, когда я пытаюсь создать новый комментарий. Когда меня направляют в форму, он считает, что идентификатор записи соответствует идентификатору комментария (например, если я нахожусь в записи 1 и хочу добавить комментарий, он переносит меня в форму комментария 1). Однако я указал в своем запросе на веточку (в отличие от изменения), что я взял только параметр film.id:
{# Modif comment, with two parameters, functionnal#}
<a href="{{path('modifComment', {'id' : film.id, 'comment' : comment.id})}}">Modif</a>
{# Add comment, with one parameter, unfunctionnal#}
<a href="{{path('createComment', {'id' : film.id})}}">Add</a>
Я использовал тот же код, что и для CRUD моих сообщений , и все же он, когда я хочу создать новый пост, возвращает мне пустую форму:
/**
* @Route("/admin/create", name="createFilm")
* @Route("/admin/{id}", name="modifFilm", methods="GET|POST")
*/
public function modification(Film $film = null, Request $req, EntityManagerInterface $em)
{
if(!$film) {
$film = new Film();
}
$form = $this->createForm(FilmType::class, $film);
$form->handleRequest($req);
if($form->isSubmitted() && $form->isValid()) {
$em->persist($film);
$em->flush();
$this->addFlash('success', 'L\'action a bien été effectuée');
return $this->redirectToRoute('admin');
}
return $this->render('admin/modif.html.twig', [
"film" => $film,
"form" => $form->createView(),
"admin" => true
]);
}
Таким образом, проблема исходит от URL-адреса, который принимает идентификатор фильма, а интерпретирует как идентификатор комментария, но я не понимаю что является причиной ?