vendor/kunstmaan/article-bundle/ViewDataProvider/ArticlePageViewDataProvider.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Kunstmaan\ArticleBundle\ViewDataProvider;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Kunstmaan\NodeBundle\Entity\NodeTranslation;
  6. use Kunstmaan\NodeBundle\Entity\PageViewDataProviderInterface;
  7. use Kunstmaan\NodeBundle\Helper\RenderContext;
  8. use Pagerfanta\Adapter\ArrayAdapter;
  9. use Pagerfanta\Pagerfanta;
  10. use Symfony\Component\HttpFoundation\RequestStack;
  11. final class ArticlePageViewDataProvider implements PageViewDataProviderInterface
  12. {
  13.     /** @var EntityManagerInterface */
  14.     private $em;
  15.     /** @var RequestStack */
  16.     private $requestStack;
  17.     public function __construct(EntityManagerInterface $emRequestStack $requestStack)
  18.     {
  19.         $this->em $em;
  20.         $this->requestStack $requestStack;
  21.     }
  22.     public function provideViewData(NodeTranslation $nodeTranslationRenderContext $renderContext): void
  23.     {
  24.         $request $this->requestStack->getMainRequest();
  25.         if (null === $request) {
  26.             return;
  27.         }
  28.         $entity $nodeTranslation->getRef($this->em);
  29.         $repository $entity->getArticleRepository($this->em);
  30.         $pages $repository->getArticles($request->getLocale());
  31.         $adapter = new ArrayAdapter($pages);
  32.         $pagerfanta = new Pagerfanta($adapter);
  33.         $pagerfanta->setMaxPerPage(5);
  34.         $pagenumber $request->query->get('page');
  35.         if (!$pagenumber || $pagenumber 1) {
  36.             $pagenumber 1;
  37.         }
  38.         $pagerfanta->setCurrentPage($pagenumber);
  39.         $renderContext['pagerfanta'] = $pagerfanta;
  40.     }
  41. }