<?php
namespace App\EventSubscriber;
use App\Exception\InvalidUploadedFileException;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class InvalidUploadedFileExceptionSubscriber implements EventSubscriberInterface
{
public function onKernelException(ExceptionEvent $event): void
{
$throwable = $event->getThrowable();
if (!$throwable instanceof InvalidUploadedFileException) {
return;
}
$request = $event->getRequest();
if ($request->hasSession()) {
$request->getSession()->getFlashBag()->add('error', $throwable->getMessage());
}
$referer = $request->headers->get('referer');
$event->setResponse(new RedirectResponse($referer ?: '/'));
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::EXCEPTION => ['onKernelException', 0],
];
}
}