/** * 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; }