vendor/score/cms/src/Controller/Article/PublicController.php line 23

Open in your IDE?
  1. <?php
  2. namespace Score\CmsBundle\Controller\Article;
  3. use Score\CmsBundle\Entity\Article\Article;
  4. use Score\BaseBundle\Services\Pager;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Score\CmsBundle\Services\StatManager;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. /**
  12.  * @Route("/clanky")
  13.  */
  14. class PublicController extends AbstractController {
  15.     /**
  16.      * @Route("/", name="score_public_articles_list", methods={"GET"})
  17.      */
  18.     public function listAction(Request $request, EntityManagerInterface $entityManager, Pager $pager): Response {
  19.         $repo = $entityManager->getRepository(Article::class);
  20.         $page = $request->get('p', 1);
  21.         $pageSize = $request->get('size', 6);
  22.         $articles = $repo->findArticlesByPage(['page' => $page, 'pageSize' => $pageSize], ['visible' => true]);
  23.         $articleList = array_chunk($articles['list'], 3);
  24.         $pager->setUrl($request->getUri());
  25.         $pager->setItemsPerPage($pageSize);
  26.         $pager->setCount($articles['total']);
  27.         $pager->setPage($page);
  28.         $pager->getPages();
  29.         return $this->render('@ScoreCms/Public/default/article_list.html.twig', [
  30.             'articleList' => $articleList,
  31.             'pager' => $pager,
  32.         ]);
  33.     }
  34.     /**
  35.      * @Route("/{slug}", name="score_public_articles_detail", methods={"GET"})
  36.      */
  37.     public function detailAction(EntityManagerInterface $entityManager, $slug = null): Response {
  38.         $repo = $entityManager->getRepository(Article::class);
  39.         $article = $repo->findOneBy([
  40.             'slug' => $slug,
  41.             'published' => 1,
  42. //            'isDeleted' => false
  43.         ]);
  44.         $responseCode = 200;
  45.         if (!$article || $article->getIsDeleted()) {
  46.             $article = new Article();
  47.             $article->setName('404');
  48.             $article->setBody('Tento článok sa tu nenachádza');
  49.             $responseCode = 404;
  50.         }
  51.         $topArticles = $repo->findSidebarArticles($article);
  52.         return new Response($this->renderView('@ScoreCms/Public/default/article_detail.html.twig', [
  53.             'article' => $article,
  54.             'articles' => $topArticles,
  55.         ]), $responseCode);
  56.     }
  57. }