src/Front/Controller/Journal/JournalController.php line 37

  1. <?php
  2. namespace App\Front\Controller\Journal;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  9. use App\Entity\Page;
  10. use App\Enum\JournalDefaultPage;
  11. use App\Front\DTO\JournalListDTO;
  12. use App\Repository\JournalPageRepository;
  13. use App\Repository\JournalRepository;
  14. use App\Enum\JournalPageTemplate;
  15. use App\Util\LanguageUtil;
  16. class JournalController extends AbstractController
  17. {
  18.     public function index(
  19.         RequestStack $requestStack,
  20.         Request $request,
  21.         Page $page,
  22.     ): Response {
  23.         $requestStack->push($request);
  24.         $dto = new JournalListDTO();
  25.         if (null !== $request->query->get('keyword')) {
  26.             $dto->text $request->query->get('keyword');
  27.         }
  28.         return $this->render('@front_templates/Journal/index.html.twig', [
  29.             'request' => $request,
  30.             'page' => $page,
  31.         ]);
  32.     }
  33.     #[Route(
  34.         path: ['pl' => '/czasopismo/{journalSlug}'],
  35.         name'journal_detail',
  36.         requirements: ['journalSlug' => '[a-zA-Z0-9\-_]+'],
  37.         priority10
  38.     )]
  39.     #[Route(
  40.         path'/{_locale}/journal/{journalSlug}',
  41.         name'journal_detail',
  42.         requirements: ['journalSlug' => '[a-zA-Z0-9\-_]+'],
  43.         priority100
  44.     )]
  45.     public function detail(
  46.         Request $request,
  47.         JournalRepository $repository,
  48.         JournalPageRepository $pageRepository,
  49.         string $journalSlug
  50.     ): Response {
  51.         $lang LanguageUtil::getLanguage($request->getLocale());
  52.         $journal $repository->findOneVisibleDetailedBySlug($journalSlug$lang);
  53.         if (! $journal) {
  54.             throw new NotFoundHttpException('Journal not found.');
  55.         }
  56.         $template = match ($journal->getView()->getTemplate()) {
  57.             JournalPageTemplate::TEMPLATE_1 => '@front_templates/Journal/detail/v1.html.twig',
  58.             JournalPageTemplate::TEMPLATE_2 => '@front_templates/Journal/detail/v2.html.twig',
  59.             JournalPageTemplate::TEMPLATE_3 => '@front_templates/Journal/detail/v3.html.twig',
  60.         };
  61.         $page $pageRepository->findOneByIdName($journalJournalDefaultPage::HOME$lang);
  62.         return $this->render($template, [ 'journalPage' => $page ]);
  63.     }
  64. }