src/Controller/NewsController.php line 34

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\Entity\News;
  5. use App\Entity\NewsInterface;
  6. use App\Extension\NewsExtension;
  7. use App\Repository\NewsRepositoryInterface;
  8. use Doctrine\Common\Collections\Collection;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\DomCrawler\Crawler;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Twig\Environment;
  14. use function Clue\StreamFilter\fun;
  15. class NewsController extends AbstractController
  16. {
  17.     private NewsRepositoryInterface $newsRepository;
  18.     private Environment $twig;
  19.     public function __construct(NewsRepositoryInterface $newsRepositoryEnvironment $twig)
  20.     {
  21.         $this->newsRepository $newsRepository;
  22.         $this->twig $twig;
  23.     }
  24.     /**
  25.      * @Route("/news", name="news_index")
  26.      */
  27.     public function index(): Response
  28.     {
  29.         $news $this->newsRepository
  30.             ->createVisibleQueryBuilder()
  31.             ->getQuery()
  32.             ->getResult();
  33.         return $this->render('page/news/index/index.html.twig', [
  34.             'posts' => $news,
  35.         ]);
  36.     }
  37.     /**
  38.      * @Route("/news/rss", name="news_rss")
  39.      */
  40.     public function rss() : Response {
  41.         $news $this->newsRepository
  42.             ->createVisibleQueryBuilder()
  43.             ->getQuery()
  44.             ->getResult();
  45.         $contents $this->twig->render('page/news/index/rss.xml.twig', [
  46.             'items' => $news,
  47.         ]);
  48.         $response = new Response($contents);
  49.         $response->headers->set('Content-Type''application/xml');
  50.         return $response;
  51.     }
  52.     /**
  53.      * @Route("/news/{news}", name="news_show")
  54.      */
  55.     public function show(NewsInterface $news): Response
  56.     {
  57.         $moreNews $this->newsRepository
  58.             ->createVisibleQueryBuilder()
  59.             ->andWhere('o != :currentNews')
  60.             ->setParameter('currentNews'$news)
  61.             ->setMaxResults(3)
  62.             ->getQuery()
  63.             ->getResult();
  64.         return $this->render('page/news/show/show.html.twig', [
  65.             'post' => $news,
  66.             'news' => $moreNews,
  67.         ]);
  68.     }
  69. }