. */ /* */ /*************************************************************************************/ namespace Thelia\Action; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\KernelEvents; use Thelia\Model\ConfigQuery; /** * * Class PageNotFound * @package Thelia\Action * @author Etienne Roudeix */ class PageNotFound extends BaseAction implements EventSubscriberInterface { public function display404(GetResponseForExceptionEvent $event) { if($event->getException() instanceof NotFoundHttpException) { $parser = $this->container->get("thelia.parser"); // Define the template thant shoud be used $parser->setTemplate(ConfigQuery::getActiveTemplate()); //$event->getRequest()->attributes->set('_view', ConfigQuery::getPageNotFoundView()); $response = new Response($parser->render(ConfigQuery::getPageNotFoundView()), 404); $event->setResponse($response); } } /** * Returns an array of event names this subscriber wants to listen to. * * The array keys are event names and the value can be: * * * The method name to call (priority defaults to 0) * * An array composed of the method name to call and the priority * * An array of arrays composed of the method names to call and respective * priorities, or 0 if unset * * For instance: * * * array('eventName' => 'methodName') * * array('eventName' => array('methodName', $priority)) * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) * * @return array The event names to listen to * * @api */ public static function getSubscribedEvents() { return array( KernelEvents::EXCEPTION => array("display404", 128), ); } }