vendor/fri0z/mldev-base-bundle/src/Controller/FrontController.php line 36

Open in your IDE?
  1. <?php
  2. namespace MLDev\BaseBundle\Controller;
  3. use Doctrine\ORM\UnexpectedResultException;
  4. use MLDev\BaseBundle\Entity\PageTemplate;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use MLDev\BaseBundle\Entity\Page;
  10. use MLDev\BaseBundle\Repository\PageRepository;
  11. /**
  12.  * Class FrontController
  13.  * @package MLDev\BaseBundle\Controller
  14.  */
  15. class FrontController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/{uri}", name="mldev-front-show", requirements={"uri": "^.*$"}, priority="-9999")
  19.      */
  20.     public function showByUri(PageRepository $pageRepositoryRequest $request, ?string $uri null): Response
  21.     {
  22.         try {
  23.             $entity $pageRepository->getPageByUri($uri);
  24.         } catch (UnexpectedResultException $exception) {
  25.             throw $this->createNotFoundException('The page does not exist');
  26.         }
  27.         return $this->renderLayout($entity$this->getTemplate($entity));
  28.     }
  29.     protected function renderCustomTemplate(Page $entitystring $template, array $parameters = []): Response
  30.     {
  31.         return $this->renderLayout($entity$templatenull$parameters);
  32.     }
  33.     protected function renderLayout(Page $entitystring $template, ?string $layout null$parameters = []): Response
  34.     {
  35.         $layout $layout ?? $this->getLayoutTemplate($entity);
  36.         return $this->render($layout, [
  37.             'page' => $entity,
  38.             'CONTENT' => $this->renderContentZone($entity$template$parameters),
  39.         ]);
  40.     }
  41.     private function renderContentZone(Page $entitystring $template, array $parameters = []): string
  42.     {
  43.         return $this->renderView($templatearray_merge([
  44.             'page' => $entity,
  45.         ], $parameters));
  46.     }
  47.     private function getTemplate(Page $entity): string
  48.     {
  49.         return sprintf('@MLDevBase/templates/%s.html.twig'$entity->getTemplate()->getAlias());
  50.     }
  51.     private function getLayoutTemplate(Page $entity): string
  52.     {
  53.         return sprintf('@MLDevBase/layout/%s.html.twig'$entity->getLayoutTemplate()->getAlias());
  54.     }
  55. }