src/Controller/NewsController.php line 31

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Page;
  4. use App\Entity\PageType;
  5. use App\Repository\PageRepository;
  6. use Knp\Component\Pager\PaginatorInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. #[Route('/news'name'app_news')]
  12. class NewsController extends AbstractController
  13. {
  14.     /**
  15.      * @var PageRepository
  16.      */
  17.     private $pageRepository;
  18.     public function __construct(PageRepository $pageRepository ){
  19.         $this->pageRepository $pageRepository;
  20.     }
  21.     #[Route(''name'app_news_list')]
  22.     public function list(Request $requestPaginatorInterface $paginator): Response
  23.     {
  24.         $queryBuilder $this->pageRepository->getWithSearchQueryBuilder(PageType::NEWS);
  25.         $pagination $paginator->paginate(
  26.             $queryBuilder,
  27.             $request->query->getInt('page'1),
  28.             /* Fixme: add constants as default value */
  29.         );
  30.         return $this->render('news/list.html.twig', ['pagination' => $pagination]);
  31.     }
  32.     #[Route('/{urlTitle}'name'app_news_show')]
  33.     public function showstring $urlTitle): Response
  34.     {
  35.         $page $this->pageRepository->findOneBy(['urlTitle' => $urlTitle]);
  36.         return $this->render('page/index.html.twig', [
  37.             'controller_name' => 'NewsController',
  38.             'page' => $page,
  39.         ]);
  40.     }
  41. }