/** * {@inheritdoc} */ public function execute(PageInterface $page, Request $request, array $parameters = array(), Response $response = null) { if ($page->getTarget()) { return new RedirectResponse($page->getTarget()->getUrl()); } $this->updateSeoPage($page, $request); if ($content = $response->getContent()) { $response = $this->templateManager->renderResponse($page->getTemplateCode(), array_merge($parameters, array('content' => $content)), $response); } else { $response = $this->templateManager->renderResponse($page->getTemplateCode(), $parameters, $response); } return $response; }
/** * Creates a base response for given page. * * @param PageInterface $page * * @return Response */ protected function createResponse(PageInterface $page) { if ($page->getTarget()) { $page->addHeader('Location', $this->router->generate($page->getTarget())); $response = new Response('', 302, $page->getHeaders() ?: array()); } else { $response = new Response('', 200, $page->getHeaders() ?: array()); } return $response; }
/** * @param \Sonata\PageBundle\Model\PageInterface $page * @param array $params * @param null|\Symfony\Component\HttpFoundation\Response $response * @return null|\Symfony\Component\HttpFoundation\Response */ public function renderPage(PageInterface $page, array $params = array(), Response $response = null) { if (!$response) { if ($page->getTarget()) { $page->addHeader('Location', sprintf('%s%s', $this->getRouter()->getContext()->getBaseUrl(), $page->getTarget()->getUrl())); return new Response('', 302, $page->getHeaders()); } if ($page->getHeaders()) { $response = new Response('', 200, $page->getHeaders()); } } $template = false; if ($this->getCurrentPage()) { $template = $this->getPageManager()->getTemplate($this->getCurrentPage()->getTemplateCode())->getPath(); } if (!$template) { $template = $this->defaultTemplatePath; } $params = array_merge($params, $this->getRenderPageParams($page)); $response = $this->templating->renderResponse($template, $params, $response); $response->setTtl($page->getTtl()); return $response; }