lib/composer/PageBundle/src/VisualMedia/PageBundle/Controller/PageController.php line 88

Open in your IDE?
  1. <?php
  2. /**
  3.  * Page Controller
  4.  *
  5.  * @author Vincent van Waasbergen <v.vanwaasbergen@visualmedia.nl>
  6.  */
  7. namespace VisualMedia\PageBundle\Controller;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use VisualMedia\LisaBundle\Component\ManagerData;
  11. use VisualMedia\LisaBundle\Component\Interfaces\EntityInterface;
  12. use VisualMedia\LisaBundle\Controller\BaseController;
  13. use VisualMedia\PageBundle\Entity\BasePage;
  14. use VisualMedia\PageBundle\Manager\BasePageManager;
  15. use VisualMedia\PageBundle\Service\PageLayoutProvider;
  16. use VisualMedia\TranslationBundle\Service\ChannelProvider;
  17. use VisualMedia\BartPageBundle\Controller\PageController as BartPageController;
  18. /**
  19.  * Page Controller
  20.  */
  21. class PageController extends BaseController
  22. {
  23.     /**
  24.      * @param Request $request
  25.      * @return Response
  26.      */
  27.     public function homeAction(Request $request): Response
  28.     {
  29.         $translator $this->get('translator');
  30.         $pageLayoutProvider $this->get(PageLayoutProvider::getServiceId());
  31.         $pageManager $this->get(BasePageManager::class);
  32.         $title $translator->trans(sprintf('%s.title'ManagePageController::KEY), [], 'pages');
  33.         $page $pageManager->getOrCreatePage(ManagePageController::KEY, [
  34.             'title' => $title,
  35.             'published' => true,
  36.             'indexable' => true,
  37.             'browserTitle' => $title,
  38.             'metaDescription' => sprintf('%s.'$title),
  39.             'layout' => 'home',
  40.         ]);
  41.         if($page->components){
  42.             return $this->forward("VisualMedia\BartPageBundle\Controller\PageController::homeAction",[
  43.                 "request" => $request,
  44.                 
  45.                 ]);
  46.         }
  47.         return $this->render($pageLayoutProvider->getLayout($page->getLayout()), [
  48.             'browser_title' => $page->browserTitle,
  49.             'meta_description' => $page->metaDescription,
  50.             'meta_keywords' => $page->metaKeywords,
  51.             'indexable' => $page->indexable,
  52.             'page' => $page,
  53.         ]);
  54.     }
  55.     /**
  56.      * @param Request $request
  57.      * @param string $slug
  58.      * @return Response
  59.      */
  60.     public function viewBySlugAction(Request $requeststring $slug nullEntityInterface $page null): Response
  61.     {
  62.         $translator $this->get('translator');
  63.         $pageLayoutProvider $this->get(PageLayoutProvider::getServiceId());
  64.         $pageManager $this->get(BasePageManager::class);
  65.         $channelProvider $this->get(ChannelProvider::class);
  66.         // Allow to show unpublished pages on preview POST.
  67.         $published $request->request->get('page') === null;
  68.         $managerData = new ManagerData([
  69.             'slug' => $slug,
  70.             'published' => $published,
  71.             'channel' => $channelProvider->getCurrentChannel(),
  72.         ]);
  73.         // Use forwarded page, or get new one by slug and channel.
  74.         if (null === $page $page ?: $pageManager->getFirst($managerData)) {
  75.             throw $this->createNotFoundException($translator->trans('page.not_found', [], 'exception'));
  76.         }
  77.         if($page->components){
  78.             return $this->forward("VisualMedia\BartPageBundle\Controller\PageController::viewBySlugAction",[
  79.                 "request" => $request,
  80.                 "slug" => $slug,
  81.                 "page" => $page
  82.                 ]);
  83.         }
  84.         return $this->render($pageLayoutProvider->getLayout($page->getLayout()), [
  85.             'browser_title' => $page->browserTitle,
  86.             'meta_description' => $page->metaDescription,
  87.             'meta_keywords' => $page->metaKeywords,
  88.             'indexable' => $page->indexable,
  89.             'page' => $page,
  90.         ]);
  91.     }
  92. }