Sulu\Bundle\PreviewBundle\Preview\Renderer\PreviewRenderer::render PHP Method

render() public method

public render ( $object, $id, $webspaceKey, $locale, $partial = false )
    public function render($object, $id, $webspaceKey, $locale, $partial = false)
    {
        $portalInformations = $this->webspaceManager->findPortalInformationsByWebspaceKeyAndLocale($webspaceKey, $locale, $this->environment);
        if (count($portalInformations) === 0) {
            throw new PortalNotFoundException($object, $id, $webspaceKey, $locale);
        }
        if (!$this->routeDefaultsProvider->supports(get_class($object))) {
            throw new RouteDefaultsProviderNotFoundException($object, $id, $webspaceKey, $locale);
        }
        /** @var PortalInformation $portalInformation */
        $portalInformation = reset($portalInformations);
        $webspace = $portalInformation->getWebspace();
        $localization = $webspace->getLocalization($locale);
        $query = [];
        $request = [];
        $cookies = [];
        $currentRequest = $this->requestStack->getCurrentRequest();
        if ($currentRequest !== null) {
            $query = $currentRequest->query->all();
            $request = $currentRequest->request->all();
            $cookies = $currentRequest->cookies->all();
        }
        $attributes = new RequestAttributes(['webspace' => $webspace, 'locale' => $locale, 'localization' => $localization, 'portal' => $portalInformation->getPortal(), 'portalUrl' => $portalInformation->getUrl(), 'resourceLocatorPrefix' => $portalInformation->getPrefix(), 'getParameters' => $query, 'postParameters' => $request, 'analyticsKey' => $this->previewDefaults['analyticsKey'], 'portalInformation' => $portalInformation]);
        $defaults = $this->routeDefaultsProvider->getByEntity(get_class($object), $id, $locale, $object);
        // Controller arguments
        $defaults['object'] = $object;
        $defaults['preview'] = true;
        $defaults['partial'] = $partial;
        $defaults['_sulu'] = $attributes;
        $request = new Request($query, $request, $defaults, $cookies);
        $request->setLocale($locale);
        $this->eventDispatcher->dispatch(Events::PRE_RENDER, new PreRenderEvent($attributes));
        try {
            $response = $this->handle($request);
        } catch (\Twig_Error $e) {
            throw new TwigException($e, $object, $id, $webspace, $locale);
        } catch (\InvalidArgumentException $e) {
            throw new TemplateNotFoundException($e, $object, $id, $webspace, $locale);
        } catch (\Exception $e) {
            throw new UnexpectedException($e, $object, $id, $webspace, $locale);
        }
        return $response->getContent();
    }