src/Controller/Shop/HomepageController.php line 40

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Shop;
  4. use App\Entity\Slide;
  5. use App\Repository\OrderItemRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Sylius\Component\Taxonomy\Repository\TaxonRepositoryInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Response;
  10. final class HomepageController extends AbstractController
  11. {
  12.     /** @var TaxonRepositoryInterface */
  13.     private TaxonRepositoryInterface $taxonRepository;
  14.     /** @var OrderItemRepository */
  15.     private OrderItemRepository $orderItemRepository;
  16.     /** @var EntityManagerInterface */
  17.     private EntityManagerInterface $em;
  18.     /**
  19.      * @param TaxonRepositoryInterface $taxonRepository
  20.      * @param OrderItemRepository $orderItemRepository
  21.      * @param EntityManagerInterface $em
  22.      */
  23.     public function __construct(TaxonRepositoryInterface $taxonRepositoryOrderItemRepository $orderItemRepositoryEntityManagerInterface $em)
  24.     {
  25.         $this->taxonRepository $taxonRepository;
  26.         $this->orderItemRepository $orderItemRepository;
  27.         $this->em $em;
  28.     }
  29.     /**
  30.      * @return Response
  31.      */
  32.     public function indexAction(): Response
  33.     {
  34.         return $this->render('bundles/SyliusShopBundle/Homepage/index.html.twig');
  35.     }
  36.     /**
  37.      * @return Response
  38.      */
  39.     public function renderSidebar(): Response
  40.     {
  41.         return $this->render('bundles/SyliusShopBundle/Homepage/_sidebar.html.twig', [
  42.             'taxons' => $this->taxonRepository->findAll()
  43.         ]);
  44.     }
  45.     /**
  46.      * @param int|null $grid
  47.      * @return Response
  48.      */
  49.     public function renderBestSelling(int $grid null): Response
  50.     {
  51.         return $this->render('bundles/SyliusShopBundle/Homepage/_best_selling.html.twig', [
  52.             'products' => $this->orderItemRepository->findBestSelling(3),
  53.             'grid' => $grid
  54.         ]);
  55.     }
  56.     /**
  57.      * @return Response
  58.      */
  59.     public function renderSlides(): Response
  60.     {
  61.         return $this->render('bundles/SyliusShopBundle/Homepage/_exclusives_offers.html.twig', [
  62.             'slides' => $this->em->getRepository(Slide::class)->findBy([], ['position' => 'ASC'], 5)
  63.         ]);
  64.     }
  65. }