src/Front/Controller/Journal/JournalController.php line 37
<?php
namespace App\Front\Controller\Journal;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use App\Entity\Page;
use App\Enum\JournalDefaultPage;
use App\Front\DTO\JournalListDTO;
use App\Repository\JournalPageRepository;
use App\Repository\JournalRepository;
use App\Enum\JournalPageTemplate;
use App\Util\LanguageUtil;
class JournalController extends AbstractController
{
public function index(
RequestStack $requestStack,
Request $request,
Page $page,
): Response {
$requestStack->push($request);
$dto = new JournalListDTO();
if (null !== $request->query->get('keyword')) {
$dto->text = $request->query->get('keyword');
}
return $this->render('@front_templates/Journal/index.html.twig', [
'request' => $request,
'page' => $page,
]);
}
#[Route(
path: ['pl' => '/czasopismo/{journalSlug}'],
name: 'journal_detail',
requirements: ['journalSlug' => '[a-zA-Z0-9\-_]+'],
priority: 10
)]
#[Route(
path: '/{_locale}/journal/{journalSlug}',
name: 'journal_detail',
requirements: ['journalSlug' => '[a-zA-Z0-9\-_]+'],
priority: 100
)]
public function detail(
Request $request,
JournalRepository $repository,
JournalPageRepository $pageRepository,
string $journalSlug
): Response {
$lang = LanguageUtil::getLanguage($request->getLocale());
$journal = $repository->findOneVisibleDetailedBySlug($journalSlug, $lang);
if (! $journal) {
throw new NotFoundHttpException('Journal not found.');
}
$template = match ($journal->getView()->getTemplate()) {
JournalPageTemplate::TEMPLATE_1 => '@front_templates/Journal/detail/v1.html.twig',
JournalPageTemplate::TEMPLATE_2 => '@front_templates/Journal/detail/v2.html.twig',
JournalPageTemplate::TEMPLATE_3 => '@front_templates/Journal/detail/v3.html.twig',
};
$page = $pageRepository->findOneByIdName($journal, JournalDefaultPage::HOME, $lang);
return $this->render($template, [ 'journalPage' => $page ]);
}
}