<?php
namespace App\Controller;
use App\ClassTheatre\TheatreController;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ErreurController extends TheatreController
{
// {{{ _construct()
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage)
{
parent::__construct($translator, $tokenStorage);
$this->view->controller = 'evenements';
$this->em = $em;
}
public function errorRedirect(Request $request): RedirectResponse
{
$exception = $request->get('exception');
$t = [
404 => 'introuvable',
500 => 'interne'
];
$statusCode = method_exists($exception, 'getStatusCode')
? $exception->getStatusCode()
: Response::HTTP_INTERNAL_SERVER_ERROR;
if ($this->getParameter('app.env') === 'dev' && $statusCode === Response::HTTP_INTERNAL_SERVER_ERROR) {
throw $exception;
}
return $this->redirectToRoute('erreur', ['type' => $t[$statusCode]]);
}
/**
* @Route("/erreur", name="erreur")
* @Route("/erreur/{type}", name="erreur_type")
*/
public function index($type = 'introuvable')
{
// erreur diff
$typeError = [
'non-accessible' => [
'code' => Response::HTTP_FORBIDDEN,
'title' => "Vous n'avez pas les droits nécessaires pour accéder à cette page"
],
'introuvable' => [
'code' => Response::HTTP_NOT_FOUND,
'title' => "Désolé ! Nous n'avons pas trouvé la page demandée..."
]
];
if(isset($typeError[$type])) {
$kv = 'err' . $typeError[$type]['code'];
$this->context['view']->$kv = true;
$this->context['view']->titre_page = $typeError[$type]['title'];
$this->view->title_page = $typeError[$type]['title'];
}
// situation
$this->view->locate = array(0 => $this->view->title_page);
return $this->view('erreur/view.html.twig');
}
}