<?php
// src/Form/EventListener/AppExceptionListener.php
namespace App\Form\EventListener;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Intl\Timezones;
use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException;
use App\Service\ConfigDataService;
class AppExceptionListener
{
private $configDataService;
public function __construct(ConfigDataService $configDataService) {
$this->configDataService = $configDataService;
}
public function onKernelException(ExceptionEvent $event)
{
$exception = $event->getThrowable();
// dd($exception);
if ($exception instanceof ForeignKeyConstraintViolationException) {
$message = sprintf(
'Cannot delete this record, has relation with another record. The message says: %s with code: %s',
$exception->getMessage(),
$exception->getCode()
);
// Customize your response object to display the exception details
$response = new Response();
$response->setContent($message);
$event->setResponse($response);
}
}
public function onKernelRequest(RequestEvent $event) {
date_default_timezone_set($this->configDataService->get('timezone'));
$request = $event->getRequest();
//$countrycode = Timezones::getCountryCode($this->configDataService->get('timezone'));
$countrycode = $this->configDataService->get('country');
//dd($countrycode);
$request->setLocale($countrycode);
}
}