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