src/Controller/ArticlesController.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\DTO\AppDTO;
  4. use App\Service\Cache\Cache;
  5. use App\Model\Articles as ModelArticles;
  6. use App\Service\SEO\Articles as SEOArticles;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use App\Service\Paginator as ServicePaginator;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\RequestStack;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. class ArticlesController extends AbstractASController
  14. {
  15.     protected AppDTO $app;
  16.     //Models
  17.     protected ModelArticles $Articles;
  18.     public function __construct(ModelArticles $ArticlesAppDTO $appRequestStack $requestStack)
  19.     {
  20.         $this->requestStack $requestStack;
  21.         $this->app $app;
  22.         $this->Articles $Articles;
  23.     }
  24.     #[Route(path'/articles'name'articles_list_no_locale'defaults: ['_locale' => '%app.default_lang%'])]
  25.     #[Route(path'/{_locale}/articles'name'articles_list'requirements: ['_locale' => '%app.langs%'])]
  26.     public function list(Request $requestSEOArticles $Seo): Response
  27.     {        
  28.         $start = (int) $request->query->get('start');
  29.         $results $this->getParameter('articles.results');
  30.         
  31.         $articles $this->Articles->getOnePage($start$results);        
  32.         
  33.         if (count($articles) == 0) {
  34.             throw $this->createNotFoundException('No articles');
  35.         }
  36.         
  37.         $response $this->render('articles/list.html.twig', [
  38.             'page' => $Seo->getPageList(),
  39.             'articles' => $articles,
  40.             'paginator' => new ServicePaginator('articles_list'count($articles), $results$start),
  41.         ]);
  42.         $response Cache::http($response$this->getParameter('app.http_cache_time'));
  43.         return $response;
  44.     }
  45.     #[Route(path'/articles/{intname}'name'articles_cont_no_locale'defaults: ['_locale' => '%app.default_lang%'])]
  46.     #[Route(path'/{_locale}/articles/{intname}'name'articles_cont'requirements: ['_locale' => '%app.langs%'])]
  47.     public function cont(SEOArticles $Seostring $intname): Response
  48.     {
  49.         $article $this->Articles->getByName($intname);
  50.         
  51.         if (!$article) {
  52.             throw $this->createNotFoundException('The article does not exist');
  53.         }
  54.         $relatedArticles $this->Articles->getRelatedArticles($article);
  55.         $response $this->render('articles/cont.html.twig', [
  56.             'page' => $Seo->getPageCont($article),
  57.             'article' => $article,
  58.             'articles' => $relatedArticles,
  59.         ]);
  60.         $response Cache::http($response$this->getParameter('app.http_cache_time'));
  61.         return $response;
  62.     }
  63. }