在部分调用实体时检索实体的实例

问题描述 投票:1回答:1

我有一个页面显示有关单个电影的信息,并愿意发表评论。为了显示每部电影的评论,我以这种方式进行:

   /**
     * @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 / ...

php symfony doctrine
1个回答
1
投票

解决方案就是简单地注入依赖项

© www.soinside.com 2019 - 2024. All rights reserved.