<?php
namespace App\EventListener;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
class UniqueConstraintViolationListener
{
public function onKernelException(ExceptionEvent $event): void
{
$throwable = $event->getThrowable();
if ($throwable instanceof UniqueConstraintViolationException) {
// Créez ici le message d'erreur que vous voulez retourner au front
$message = 'error.email_already_exists';
// On peut générer une 400 Bad Request
$response = new JsonResponse(['error' => $message], 400);
// Et on "remplace" la réponse
$event->setResponse($response);
}
}
}