GalerieController

GalerieController.php

<?php

namespace App\Controller;

use App\Entity\Image;
use App\Form\ImageType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\String\Slugger\SluggerInterface;
use Symfony\Component\HttpFoundation\File\Exception\FileException;

class GalerieController extends AbstractController
{
    #[Route('/hello/{unnom}', name: 'hello')]
    public function hello(string $unnom): Response
    {
        $this->addFlash('info', 'Le message a bien été envoyé !');
        return new Response("<html><body><h1>Hello " . $unnom . " !</h1></body></html>");
    }

    #[Route('/lucky/number', name: 'app_lucky_number')]
    public function lucky(): Response
    {
        $number = random_int(0, 100);
        return $this->render('galerie/number.html.twig', [
            'number' => $number,
        ]);
    }

    #[Route('/galerie/add', name: 'ajout_image')]
    public function add(Request $request, EntityManagerInterface $em, SluggerInterface $slugger): Response
    {
        $image = new Image();
        $form = $this->createForm(ImageType::class, $image);
        
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            // Récupération du fichier uploadé
            $imageFile = $form->get('fichier')->getData();

            if ($imageFile) {
                $originalFilename = pathinfo($imageFile->getClientOriginalName(), PATHINFO_FILENAME);
                $safeFilename = $slugger->slug($originalFilename);
                $newFilename = $safeFilename.'-'.uniqid().'.'.$imageFile->guessExtension();

                try {
                    $imageFile->move(
                        $this->getParameter('images_directory'),
                        $newFilename
                    );
                } catch (FileException $e) {
                    $this->addFlash('danger', 'Erreur lors de l\'upload.');
                    return $this->redirectToRoute('ajout_image');
                }

                $image->setUrl($newFilename);
            }

            $em->persist($image);
            $em->flush();
            $this->addFlash('success', 'Image ajoutée avec succès !');
            
            return $this->redirectToRoute('accueil_galerie');
        }

        return $this->render('galerie/add.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    #[Route('/galerie/{page}', name: 'accueil_galerie', defaults: ['page' => 1], requirements: ['page' => '\d+'])]
    public function index(EntityManagerInterface $em, int $page): Response
    {
        $repository = $em->getRepository(Image::class);
        $images = $repository->findAll();

        return $this->render('galerie/index.html.twig', [
            'images' => $images, 
            'page' => $page
        ]);
    }
}

explication

Le fichier GalerieController.php va permettre a l'utilisateur d'ajouter des images dans la galerie