public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $request = $event->getRequest();
        $exception = $event->getException();
        if (!$exception instanceof HttpExceptionInterface || Zone::isBackend($request)) {
            return;
        }
        if ($exception->getStatusCode() !== Response::HTTP_NOT_FOUND) {
            return;
        }
        // If no zone is set, assume front-end as SELECT queries can leak unpublished records
        if (Zone::get($request) === null) {
            Zone::set($request, Zone::FRONTEND);
        }

        foreach ($this->notFoundPage as $item) {
            try {
                $this->renderNotFound($event, $item);

                return;
            } catch (LoaderError $e) {
                // Template not found, fall though to see if we can render a
                // record, failing that let the exception handler take over
            }

            $content = $this->storage->getContent($item, ['returnsingle' => true]);
            if ($content instanceof Content && !empty($content->id)) {
                $template = $this->templateChooser->record($content);
                $this->renderNotFound($event, $template, $content->getTemplateContext());

                return;
            }
        }

        $msg = sprintf(
            'No page could be shown, because the "notfound" setting "%s" in config.yml or theme.yml is not valid.',
            implode(', ', $this->notFoundPage)
        );
        $event->setException(new NotFoundHttpException($msg, $e));
    }
public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $request = $event->getRequest();
        $exception = $event->getException();
        if (!$exception instanceof HttpExceptionInterface || Zone::isBackend($request)) {
            return;
        }
        if ($exception->getStatusCode() !== Response::HTTP_NOT_FOUND) {
            return;
        }
        // If no zone is set, assume front-end as SELECT queries can leak unpublished records
        if (Zone::get($request) === null) {
            Zone::set($request, Zone::FRONTEND);
        }

        foreach ($this->notFoundPage as $item) {
            try {
                $this->renderNotFound($event, $item);

                return;
            } catch (LoaderError $e) {
                // Template not found, fall though to see if we can render a
                // record, failing that let the exception handler take over
            }

            $content = $this->storage->getContent($item, ['returnsingle' => true]);
            if ($content instanceof Content && !empty($content->id)) {
                $template = $this->templateChooser->record($content);
                $this->renderNotFound($event, $template, $content->getTemplateContext());

                return;
            }
        }

        $msg = sprintf(
            'No page could be shown, because the "notfound" setting "%s" in config.yml or theme.yml is not valid.',
            implode(', ', $this->notFoundPage)
        );
        $event->setException(new NotFoundHttpException($msg, $e));
    }
public function onKernelException ( GetResponseForExceptionEvent $ event ) { $ request = $ event -> getRequest ( ) ; $ exception = $ event -> getException ( ) ; if ( ! $ exception instanceof HttpExceptionInterface || Zone :: isBackend ( $ request ) ) { return ; } if ( $ exception -> getStatusCode ( ) !== Response :: HTTP_NOT_FOUND ) { return ; } // If no zone is set, assume front-end as SELECT queries can leak unpublished records if ( Zone :: get ( $ request ) === null ) { Zone :: set ( $ request , Zone :: FRONTEND ) ; } foreach ( $ this -> notFoundPage as $ item ) { try { $ this -> renderNotFound ( $ event , $ item ) ; return ; } catch ( LoaderError $ e ) { // Template not found, fall though to see if we can render a // record, failing that let the exception handler take over } $ content = $ this -> storage -> getContent ( $ item , [ 'returnsingle' => true ] ) ; if ( $ content instanceof Content && ! empty ( $ content -> id ) ) { $ template = $ this -> templateChooser -> record ( $ content ) ; $ this -> renderNotFound ( $ event , $ template , $ content -> getTemplateContext ( ) ) ; return ; } } $ msg = sprintf ( 'No page could be shown, because the "notfound" setting "%s" in config.yml or theme.yml is not valid.' , implode ( ', ' , $ this -> notFoundPage ) ) ; $ event -> setException ( new NotFoundHttpException ( $ msg , $ e ) ) ; }
Render the not found page if on frontend and http exception.

@param GetResponseForExceptionEvent $event
Render the not found page if on frontend and http exception .