affichage d'image avec Vitch Bundle et DTO

Par drelin04, il y a 1 an


Je suis le tuto sur Symfony 7, après avoir installé vitch pour la gestion de mes images, j'ai crée une DTO.

mais quand j'essaie d'afficher l'image j'ai une erreur

ma DTO

<?php namespace App\DTO; use Vich\UploaderBundle\Mapping\Annotation as Vich; #[Vich\Uploadable] class CategoriesWithCountDTO { public function __construct( public readonly int $id, public readonly string $titre, public readonly string $thumbnail, public readonly string $descriptif, public readonly int $count ) { } }

dans mon controller

#[Route(name: 'index')] public function index(Request $request, CategoriesRepository $categoriesRepository): Response { $page = $request->query->getInt('page', 1); $limit = 10; $categorie = $categoriesRepository->paginateCategoriesWithCount($page, $limit); $maxPage = ceil($categorie->getTotalItemCount()/ $limit); return $this->render('admin/categorie/index.html.twig', [ 'categories' => $categorie ]); }

mon template twig

<article> <table class="table"> <thead> <tr> <th> Noms </th> <th> Émissions </th> <th style="width: 200px"> Actions </th> </tr> </thead> <tbody> {% for categorie in categories %} <tr> <td> <a href="{{ path('admin.categorie.edit', {id: categorie.id }) }}"> {{ categorie.titre }} </a> {# {{ dump(categorie) }} #} <p> {% if categorie.thumbnail %} ---> <img src="{{ vich_uploader_asset(categorie, 'thumbnailFile') }}" alt="Photo de {{ categorie.titre }}"> {% endif %} {{ categorie.descriptif }} </p> </td> <td> {{ categorie.count }} </td> <td> <div class="d-flex gap-1"> <a class="btn btn-primary btn-sm" href="{{ path('admin.categorie.edit', {id: categorie.id}) }}"> Éditer </a> <form action="{{ path('admin.categorie.delete', {id: categorie.id}) }}" method="post"> <input type="hidden" name="_method" value="DELETE"> <button type="submit" class="btn btn-danger btn-sm"> Supprimer </button> </form> </div> </td> </tr> {% endfor %} </tbody> </table> {{ knp_pagination_render(categories) }} </article>

(flêche sur la ligne qui fait bugguer)

mon vitch_uploader.yaml

vich_uploader: db_driver: orm mappings: emissions: uri_prefix: /images/emissions upload_destination: '%kernel.project_dir%/public/images/emissions' namer: service: Vich\UploaderBundle\Naming\PropertyNamer options: { property: 'titre'} categories: uri_prefix: /images/categories upload_destination: '%kernel.project_dir%/public/images/categories' namer: service: Vich\UploaderBundle\Naming\PropertyNamer options: { property: 'titre'}

Ce que je veux

j'aimerais que mon image s'affiche, d'ailleurs, ça marche quand j'utilise pas de DTO, donc je me dit que j'ai dû oublier quelque chose ....
Par exemple l'affichage d'images pour émission marche parfaitement bien.

Ce que j'obtiens

j'obtiens l'erreur suivante :

"MappingNotFoundException RuntimeError HTTP 500 Internal Server Error

An exception has been thrown during the rendering of a template ("Mapping not found for field "thumbnailFile"").

Quelqu'un a une idée ?

Aucune réponse