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