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