src/Controller/MainController.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\Cache\Cache;
  4. use App\Model\Cart as ModelCart;
  5. use App\Model\Prod as ModelProd;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use App\RepositoryInterface\PageRepositoryInterface;
  11. use App\RepositoryInterface\ProdRepositoryInterface;
  12. use App\RepositoryInterface\PhotoRepositoryInterface;
  13. use App\RepositoryInterface\BannerRepositoryInterface;
  14. class MainController extends AbstractASController
  15. {
  16.     protected EntityManagerInterface $em;
  17.     protected ModelProd $ModelProd;
  18.     protected ModelCart $ModelCart;
  19.     //Repositories
  20.     protected PageRepositoryInterface $Pages;
  21.     protected BannerRepositoryInterface $Banners;
  22.     protected ProdRepositoryInterface $Prods;
  23.     protected PhotoRepositoryInterface $Photos;
  24.     public function __construct(ModelProd $ModelProdPageRepositoryInterface $PagesBannerRepositoryInterface $BannersProdRepositoryInterface $ProdsPhotoRepositoryInterface $PhotosModelCart $ModelCartRequestStack $requestStack)
  25.     {
  26.         $this->requestStack $requestStack;
  27.         $this->ModelProd $ModelProd;
  28.         $this->ModelCart $ModelCart;
  29.         $this->Pages $Pages;
  30.         $this->Banners $Banners;
  31.         $this->Prods $Prods;
  32.         $this->Photos $Photos;
  33.     }
  34.     #[Route('/'name'home_no_locale'defaults: ['_locale' => '%app.default_lang%'])]
  35.     #[Route('/{_locale}'name'home'requirements: ['_locale' => '%app.langs%'])]
  36.     public function index(): Response
  37.     {
  38.         $page $this->Pages->getMainPage();
  39.         $capage $this->Pages->getByName('catalog/action');
  40.         $banners $this->Banners->getForMainPage();
  41.         $actions $this->Pages->getActions(12);
  42.         $newactions $this->Pages->getNewActions(12);                
  43.         $prods $this->Prods->getNewProds(12);        
  44.         
  45.         $prodphotos = [];
  46.         foreach ($prods as $k => $prod) {
  47.             $prods[$k]->setPrices($this->ModelProd->getPrices($prod));
  48.             $prodphotos[$prod->getId()] = $this->Photos->getProdPhotos($prod->getId());
  49.         }
  50.         $response $this->render('main/index.html.twig', [
  51.             'time' => time(),
  52.             'page' => $page,
  53.             'isVisibleActions' => $capage->isVisible(),
  54.             'pageblocks' => $page->getBlocks(),
  55.             'photos' => $page->getPhotos(),
  56.             'banners' => $banners,
  57.             'actions' => $actions,
  58.             'newactions' => $newactions,
  59.             'action_prods' => $prods,
  60.             'action_prods_photos' => $prodphotos,
  61.             'cart_items' => $this->ModelCart->getCart(),
  62.         ]);
  63.         $response Cache::http($response$this->getParameter('app.http_cache_time'));
  64.         return $response;
  65.     }
  66. }