vendor/nen/kennisbank-platform/src/Nen/Controller/PagesController.php line 72

Open in your IDE?
  1. <?php namespace Nen\Bundle\KennisbankPlatformBundle\Controller;
  2. use Nen\Bundle\KennisbankPlatformBundle\Bolt\BoltConfiguration;
  3. use Nen\Bundle\KennisbankPlatformBundle\Entity\BoltPage;
  4. use Nen\Bundle\KennisbankPlatformBundle\Handler\PageHandler;
  5. use Nen\Bundle\KennisbankPlatformBundle\Repository\BoltPageRepository;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. class PagesController extends AbstractController
  12. {
  13.     /**
  14.      * @Route("/{section}/{page}/{record}", name="pages_index", requirements={"section": "%nen.requirements.sections%"})
  15.      */
  16.     public function index(string $sectionPageHandler $pageHandlerstring $page nullstring $record null)
  17.     {
  18.         $data $pageHandler->getDataForPage($section$page$record);
  19.         if ($data === null) {
  20.             throw $this->createNotFoundException();
  21.         }
  22.         return $this->render('@KennisbankPlatform/pages/index.html.twig'$data);
  23.     }
  24.     /**
  25.      * @Route("/{id}", name="pages_redirect_to_url", requirements={"id": "\d+"})
  26.      *
  27.      * @param BoltPage $page
  28.      * @return RedirectResponse
  29.      */
  30.     public function redirectToUrl(BoltPage $page)
  31.     {
  32.         $section $page->getSection();
  33.         // When no section is set we assume this is a wildcard page.
  34.         if (empty($section)) {
  35.             return $this->redirectToRoute('pages_record', ['slug' => $page->getSlug()]);
  36.         }
  37.         $redirectToSlug = [
  38.             'system',
  39.             'general-public',
  40.             'general-private',
  41.         ];
  42.         // General and system  pages should match url by slug.
  43.         if (in_array($section->getSlug(), $redirectToSlug)) {
  44.             return $this->redirect($page->getSlug());
  45.         }
  46.         // @todo(guido): redirect all pages under practical help.
  47.         //dd($section);
  48.     }
  49.     /**
  50.      * @Route("/{slug}", name="pages_record")
  51.      * @Route("/pagina/{slug}", name="pages_record_bolt")
  52.      *
  53.      * @param string $slug
  54.      * @param BoltPageRepository $pageRepository
  55.      * @return Response
  56.      */
  57.     public function record(string $slugBoltPageRepository $pageRepository): Response
  58.     {
  59.         $page $pageRepository->findOneWithoutSection($slug);
  60.         if ($page === null) {
  61.             $page $pageRepository->findOneByGeneralSectionAndSlug($slug);
  62.         }
  63.         if ($page === null) {
  64.             throw $this->createNotFoundException();
  65.         }
  66.         $page->setFaqs($pageRepository->findFaqsForPage($page));
  67.         $page->setBlocks($pageRepository->findBlocksForPage($page));
  68.         $page->setPages($pageRepository->findPagesForPage($page));
  69.         if (count($page->getSections()) === 0) {
  70.             $page->setSections($pageRepository->findFieldValuesForId($page->getId(), 'extra_sections'));
  71.         }
  72.         return $this->render(
  73.             '@KennisbankPlatform/pages/index.html.twig',
  74.             [
  75.                 'page' => $page,
  76.             ]
  77.         );
  78.     }
  79. }