src/Controller/Mvc/NewsController.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Mvc;
  3. use App\Entity\News\Child;
  4. use App\Entity\News\Entry;
  5. use App\Form\News\ListType;
  6. use App\Repository\News\CategoryRepository;
  7. use App\Repository\News\EntryRepository;
  8. use App\Service\CmsHelperService;
  9. use App\Service\FileUploader\UploadService;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. /**
  16.  * @Route("/news")
  17.  */
  18. class NewsController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/", name="news_index", methods={"GET"})
  22.      */
  23.     public function index(
  24.         Request $request,
  25.         EntryRepository $repository,
  26.         CategoryRepository $categoryRepository,
  27.         CmsHelperService $helper
  28.     ): Response {
  29.         $form $this->createForm(ListType::class);
  30.         $criteria $request->query->all();
  31.         $criteria['limit'] = $criteria['limit'] ?? 8;
  32.         $form->submit($criteria);
  33.         $paginate $helper->listHandle($repository$form->getViewData());
  34.         return $this->render("pages/news/index.html.twig", [
  35.             "paginate" => $paginate,
  36.             "data" => $paginate->getPaginator()->getIterator(),
  37.             "categories" => $categoryRepository->getCategoriesHaveEntry(),
  38.             "current_category" => $form->getViewData()['category']
  39.         ]);
  40.     }
  41.     /**
  42.      * @Route("/{id}", name="news_detail", methods={"GET"}, requirements={"id" = "\d+"})
  43.      */
  44.     public function detail(
  45.         EntryRepository $repository,
  46.         $id
  47.     ) {
  48.         $Entry $repository->getEntry($id);
  49.         if(!$Entry) {
  50.             throw new NotFoundHttpException('page not found');
  51.         }
  52.         if($Entry->getLinkUrl()) {
  53.             return $this->redirect($Entry->getLinkUrl());
  54.         }
  55.         return $this->render("pages/news/detail.html.twig", [
  56.             "entry" => $Entry
  57.         ]);
  58.     }
  59.     /**
  60.      * @Route("/image/{filename}", name="news_image", methods={"GET"})
  61.      */
  62.     public function image(UploadService $uploader$filename) {
  63.         $config $uploader->getUploadConfig(new Entry"main_img");
  64.         return $uploader->outputResponseOrWebpResponse($filename$config);
  65.     }
  66.     /**
  67.      * @Route ("/file/{filename}", name="news_file", methods={"GET"})
  68.      */
  69.     public function pdfFile(UploadService $service$filename) {
  70.         $config $service->getUploadConfig(new Child(), "file");
  71.         return $service->output($filename$config);
  72.     }
  73.     /**
  74.      * @Route("/headline", name="news_headline", methods={"GET"})
  75.      */
  76.     public function headline(Request $requestEntryRepository $repository) {
  77.         $criteria $request->query->all();
  78.         $qb $repository->getListQuery($criteria);
  79.         $qb->setMaxResults(isset($criteria['limit']) && $criteria['limit']? $criteria['limit']: 6);
  80.         switch ($request->query->get('view')) {
  81.             case "topics":
  82.                 $view 'pages/news/topics_headline.html.twig';
  83.                 break;
  84.             case "life":
  85.                 $view 'pages/life/_news.html.twig';
  86.                 break;
  87.             default:
  88.                 $view 'pages/news/headline.html.twig';
  89.                 break;
  90.         }
  91.         return $this->render($view, [
  92.             "data" => $qb->getQuery()->getResult()
  93.         ]);
  94.     }
  95. }