lib/composer/BartBundle/src/VisualMedia/BartPageBundle/Controller/PageController.php line 82

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