Передайте несколько параметров правильно вашему контроллеру - PullRequest
0 голосов
/ 27 марта 2020

Я уже спросил здесь и там , но ничто более или менее не соответствует моей проблеме.

У меня есть страница с информацией о мове ie , к которому я обращаюсь с параметром id:

<a href="{{path('film', {'id': film.id{){{" class="btn btn-primary"> See comments </a>

Таблица фильмов, имеющая отношение к таблице как, я отображаю все комментарии, указанные c к mov ie благодаря ArrayCollection :

 $filmRepo = $repo->find($id);

 $comments = $filmRepo->getComments();

Я создал CommentController, в котором я написал этот метод, целью которого было бы восстановить идентификатор mov ie И идентификатор комментария чтобы иметь возможность операций CRUD над ним:

/**
  * @Route("{id}/{comment}/create", name="createComment")
  * @Route("{id}/{comment}/modif", name="modifComment", defaults={"comment"=1}, methods="GET|POST")
  */
    public function modification(Comment $comment = null, Film $film, Request $req, EntityManagerInterface $em) 
    {
        if(!$comment) {
            $comment = new Comment();
        }

        $user = $this->getUser();
        $form = $this->createForm(CommentType::class, $comment);
        $form->handleRequest($req);

        if($form->isSubmitted() && $form->isValid()) {
            $comment->setAuthor($user);
            $comment->setFilm($film);
            $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 Так что что-то не так с моей просьбой. Однако я передаю два параметра в шаблон веточки:

<a href="{{path('modifComment', {'id' : film.id }, {'comment' : comment.id})}}">Modif</a>

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Проблема связана с синтаксической ошибкой в ​​шаблоне ветки. Вместо:

<a href="{{path('modifComment', {'id' : film.id }, {'comment' : comment.id})}}">Modif</a>

Скорее сделайте:

<a href="{{path('modifComment', {'id' : film.id, 'comment' : comment.id})}}">Modif</a>
0 голосов
/ 27 марта 2020

Ваш код должен работать нормально, но переключите параметры в вашем контроллере на:

public function modification(Film $film ,Comment $comment = null, Request $req, EntityManagerInterface $em)

Поскольку вы передадите /film/comment, но ваш контроллер получит /comment/film с этим:

public function modification(Comment $comment = null, Film $film, Request $req, EntityManagerInterface $em)
...