我有一个页面显示有关单个电影的信息,并愿意发表评论。为了显示每部电影的评论,我以这种方式进行:
/**
* @Route("film/{id}", name="film")
*/
public function film(FilmRepository $repo, EntityManagerInterface $em, Request $req, $id)
{
$film = $repo->find($id);
$comments = $film->getComments();
$comment = new Comment;
$form = $this->createForm(CommentType::class);
$form->handleRequest($req);
if($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$comment->setAuthor($this->getUser());
$comment->setFilm($id);
$em->persist($comment);
$em->flush();
}
return $this->render('film/film.html.twig', [
'controller_name' => 'FilmController',
'film' => $film,
'comments' => [$comments],
'form' => $form->createView()
]);
}
我以为,传递$ id变量(我得到并对应于电影id的变量就足够了。但是我得到了错误:
传递给App \ Entity \ Comment :: setFilm()的参数1必须是App \ Entity \ Film的实例,或者为null(给定的整数),在/ home /“”“” / projet-film2 /中调用第61行的src / Controller / FilmController.php]
该错误是不言自明的,它可以说明一切。我将不得不实例化一个新的电影对象,获取它的movie-> getId()id,并将其作为setter参数传递。但是既然电影已经在这里实例化,那可能会使事情复杂化,对吗? 除了实例化之外,还有其他方法可以解决此问题吗?
我有一个页面显示有关单个电影的信息,并愿意发表评论。为了显示每部电影的评论,我以这种方式进行:/ ** * @Route(“ film / ...
解决方案就是简单地注入依赖项