Bonjour
depuis ma route episode/{slug} j'aimerais afficher les commentaire.

Le Controller

 <?php
    namespace App\Controller;

    use App\Entity\Comment;
    use App\Entity\Episode;
    use App\Form\CommentType;
    use App\Repository\EpisodeRepository;
    use Doctrine\ORM\EntityManagerInterface;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

    use Symfony\Component\HttpFoundation\Request;

    #[Route('/episode', name: 'episode_')]
    class EpisodeController extends AbstractController
    {
        #[Route('/', name: 'index')]
        public function index(EpisodeRepository $episodeRepository): Response
        {
            return $this->render('episode/index.html.twig', [
            'episode' => $episodeRepository->findBy([],
            ['id' => 'DESC'])
            ]);
        }

        #[Route('/{slug}', name:('detail'))]
        public function details (Episode $episode, Request $request, EntityManagerInterface $entityManager): Response
        {
            $comment = new Comment();

            $commentForm = $this->createForm(CommentType::class, $comment);

            $commentForm->handleRequest($request);

            return $this->render('episode/detail.html.twig', [
                'commentForm' => $commentForm->createView()
            ]);
        }

            /*
            if($commentForm->isSubmitted() && $commentForm->isValid()){
                $entityManager->persist($comment);
                $entityManager->flush();

                $this->addFlash(
                    'success',
                "Le commentaire {$comment->getContent()} a bien été enregistrée"
            );

            return $this->redirectToRoute('app_home');
        }
        */
}Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)

La vue:

{% extends 'base.html.twig' %}

{% block body %}
    <main class="container">
        <section class="row">
        <div class="card m-5" style="width: 25rem;">
            <img src="{{ episode.coverImage }}" class="card-img-top" alt="...">
            <div class="card-body">
                <h5 class="card-title">{{ episode.title }}</h5>
                <p class="card-text">{{ episode.introduction }}</p>
                <audio   class:"" controls preload="none">
                    <source src="{{ episode.audio }}">
                </audio>
            </div>
        </div>
        <div class="card m-5" style="width: 25rem;">
            <h2>Liste des commentaires</h2>
        </div> *
        <div class="card m-5" style="width: 25rem;">
            <h2>Ajouter un commentaire</h2>
            {{ form(commentForm) }}
        </div> 
        </section>
        <section class="container">

        </section>
    </main>
{% endblock %}

Message erreur :

Object of class App\Entity\Episode could not be converted to string

2 réponses


Bonjour,
Dans ton contrôleur, l faut passer $episode à ta vue, ensuite tu pourras boucler sur episode . comments (en partant du principe que ton entité Episode possède une propriété comments qui fait la liaison.)

il faut rajouter la fonction toString
mais je ne voie pas de requete qui recupere les comments