src/Kunstmaan/NodeBundle/Controller/SlugController.php
public function slugAction(Request $request, $url = null, $preview = false)
    {
        /* @var EntityManager $em */
        $em = $this->getDoctrine()->getManager();
        $locale = $request->getLocale();

        /* @var NodeTranslation $nodeTranslation */
        $nodeTranslation = $request->attributes->get('_nodeTranslation');

        // If no node translation -> 404
        if (!$nodeTranslation) {
            throw $this->createNotFoundException('No page found for slug ' . $url);
        }

        $entity = $this->getPageEntity(
            $request,
            $preview,
            $em,
            $nodeTranslation
        );
        $node = $nodeTranslation->getNode();

        $securityEvent = new SlugSecurityEvent();
        $securityEvent
            ->setNode($node)
            ->setEntity($entity)
            ->setRequest($request)
            ->setNodeTranslation($nodeTranslation);

        $nodeMenu = $this->container->get('kunstmaan_node.node_menu');
        $nodeMenu->setLocale($locale);
        $nodeMenu->setCurrentNode($node);
        $nodeMenu->setIncludeOffline($preview);

        $eventDispatcher = $this->get('event_dispatcher');
        $eventDispatcher->dispatch(Events::SLUG_SECURITY, $securityEvent);

        //render page
        $renderContext = new RenderContext(
            array(
                'nodetranslation' => $nodeTranslation,
                'slug' => $url,
                'page' => $entity,
                'resource' => $entity,
                'nodemenu' => $nodeMenu,
            )
        );
        if (method_exists($entity, 'getDefaultView')) {
            /* @noinspection PhpUndefinedMethodInspection */
            $renderContext->setView($entity->getDefaultView());
        }
        $preEvent = new SlugEvent(null, $renderContext);
        $eventDispatcher->dispatch(Events::PRE_SLUG_ACTION, $preEvent);
        $renderContext = $preEvent->getRenderContext();

        /** @noinspection PhpUndefinedMethodInspection */
        $response = $entity->service($this->container, $request, $renderContext);

        $postEvent = new SlugEvent($response, $renderContext);
        $eventDispatcher->dispatch(Events::POST_SLUG_ACTION, $postEvent);

        $response = $postEvent->getResponse();
        $renderContext = $postEvent->getRenderContext();

        if ($response instanceof Response) {
            return $response;
        }

        $view = $renderContext->getView();
        if (empty($view)) {
            throw $this->createNotFoundException(sprintf('Missing view path for page "%s"', get_class($entity)));
        }

        $template = new Template(array());
        $template->setTemplate($view);

        $request->attributes->set('_template', $template);

        return $renderContext->getArrayCopy();
    }
public function slugAction(Request $request, $url = null, $preview = false)
    {
        /* @var EntityManager $em */
        $em = $this->getDoctrine()->getManager();
        $locale = $request->getLocale();

        /* @var NodeTranslation $nodeTranslation */
        $nodeTranslation = $request->attributes->get('_nodeTranslation');

        // If no node translation -> 404
        if (!$nodeTranslation) {
            throw $this->createNotFoundException('No page found for slug ' . $url);
        }

        $entity = $this->getPageEntity(
            $request,
            $preview,
            $em,
            $nodeTranslation
        );
        $node = $nodeTranslation->getNode();

        $securityEvent = new SlugSecurityEvent();
        $securityEvent
            ->setNode($node)
            ->setEntity($entity)
            ->setRequest($request)
            ->setNodeTranslation($nodeTranslation);

        $nodeMenu = $this->container->get('kunstmaan_node.node_menu');
        $nodeMenu->setLocale($locale);
        $nodeMenu->setCurrentNode($node);
        $nodeMenu->setIncludeOffline($preview);

        $eventDispatcher = $this->get('event_dispatcher');
        $eventDispatcher->dispatch(Events::SLUG_SECURITY, $securityEvent);

        //render page
        $renderContext = new RenderContext(
            array(
                'nodetranslation' => $nodeTranslation,
                'slug' => $url,
                'page' => $entity,
                'resource' => $entity,
                'nodemenu' => $nodeMenu,
            )
        );
        if (method_exists($entity, 'getDefaultView')) {
            /* @noinspection PhpUndefinedMethodInspection */
            $renderContext->setView($entity->getDefaultView());
        }
        $preEvent = new SlugEvent(null, $renderContext);
        $eventDispatcher->dispatch(Events::PRE_SLUG_ACTION, $preEvent);
        $renderContext = $preEvent->getRenderContext();

        /** @noinspection PhpUndefinedMethodInspection */
        $response = $entity->service($this->container, $request, $renderContext);

        $postEvent = new SlugEvent($response, $renderContext);
        $eventDispatcher->dispatch(Events::POST_SLUG_ACTION, $postEvent);

        $response = $postEvent->getResponse();
        $renderContext = $postEvent->getRenderContext();

        if ($response instanceof Response) {
            return $response;
        }

        $view = $renderContext->getView();
        if (empty($view)) {
            throw $this->createNotFoundException(sprintf('Missing view path for page "%s"', get_class($entity)));
        }

        $template = new Template(array());
        $template->setTemplate($view);

        $request->attributes->set('_template', $template);

        return $renderContext->getArrayCopy();
    }
public function slugAction ( Request $ request , $ url = null , $ preview = false ) { /* @var EntityManager $em */ $ em = $ this -> getDoctrine ( ) -> getManager ( ) ; $ locale = $ request -> getLocale ( ) ; /* @var NodeTranslation $nodeTranslation */ $ nodeTranslation = $ request -> attributes -> get ( '_nodeTranslation' ) ; // If no node translation -> 404 if ( ! $ nodeTranslation ) { throw $ this -> createNotFoundException ( 'No page found for slug ' . $ url ) ; } $ entity = $ this -> getPageEntity ( $ request , $ preview , $ em , $ nodeTranslation ) ; $ node = $ nodeTranslation -> getNode ( ) ; $ securityEvent = new SlugSecurityEvent ( ) ; $ securityEvent -> setNode ( $ node ) -> setEntity ( $ entity ) -> setRequest ( $ request ) -> setNodeTranslation ( $ nodeTranslation ) ; $ nodeMenu = $ this -> container -> get ( 'kunstmaan_node.node_menu' ) ; $ nodeMenu -> setLocale ( $ locale ) ; $ nodeMenu -> setCurrentNode ( $ node ) ; $ nodeMenu -> setIncludeOffline ( $ preview ) ; $ eventDispatcher = $ this -> get ( 'event_dispatcher' ) ; $ eventDispatcher -> dispatch ( Events :: SLUG_SECURITY , $ securityEvent ) ; //render page $ renderContext = new RenderContext ( array ( 'nodetranslation' => $ nodeTranslation , 'slug' => $ url , 'page' => $ entity , 'resource' => $ entity , 'nodemenu' => $ nodeMenu , ) ) ; if ( method_exists ( $ entity , 'getDefaultView' ) ) { /* @noinspection PhpUndefinedMethodInspection */ $ renderContext -> setView ( $ entity -> getDefaultView ( ) ) ; } $ preEvent = new SlugEvent ( null , $ renderContext ) ; $ eventDispatcher -> dispatch ( Events :: PRE_SLUG_ACTION , $ preEvent ) ; $ renderContext = $ preEvent -> getRenderContext ( ) ; /** @noinspection PhpUndefinedMethodInspection */ $ response = $ entity -> service ( $ this -> container , $ request , $ renderContext ) ; $ postEvent = new SlugEvent ( $ response , $ renderContext ) ; $ eventDispatcher -> dispatch ( Events :: POST_SLUG_ACTION , $ postEvent ) ; $ response = $ postEvent -> getResponse ( ) ; $ renderContext = $ postEvent -> getRenderContext ( ) ; if ( $ response instanceof Response ) { return $ response ; } $ view = $ renderContext -> getView ( ) ; if ( empty ( $ view ) ) { throw $ this -> createNotFoundException ( sprintf ( 'Missing view path for page "%s"' , get_class ( $ entity ) ) ) ; } $ template = new Template ( array ( ) ) ; $ template -> setTemplate ( $ view ) ; $ request -> attributes -> set ( '_template' , $ template ) ; return $ renderContext -> getArrayCopy ( ) ; }
Handle the page requests

@param Request $request The request
@param string  $url     The url
@param bool    $preview Show in preview mode

@throws NotFoundHttpException
@throws AccessDeniedException

@return Response|array
Handle the page requests