У меня есть страница, которая отображает информацию об одном фильме и предлагает оставить комментарий. Чтобы отобразить комментарии, указанные c к каждому фильму, я поступил следующим образом:
/**
* @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 (которую я получаю и которая соответствует идентификатору фильма) будет быть достаточным. Но я получаю сообщение об ошибке:
Аргумент 1, передаваемый в App \ Entity \ Comment :: setFilm (), должен быть экземпляром App \ Entity \ Film или нулевым целым числом, вызываемым в /home/""""/projet-film2/src/Controller/FilmController.php в строке 61
Ошибка довольно очевидна и говорит сама за себя. Мне нужно создать экземпляр нового объекта mov ie, получить его идентификатор mov ie -> getId () и передать его в качестве параметра-установщика. Но поскольку фильм уже создан здесь, это может усложнить ситуацию, верно? Есть ли способ обойти эту проблему иначе, чем создание экземпляров?