src/Controller/EshopController.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Product;
  4. use App\Form\Filter\EshopFilterType;
  5. use App\Repository\ProductRepository;
  6. use App\Services\EshopFilter;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Session\Session;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class EshopController extends AbstractController
  14. {
  15.     #[Route('/eshop'name'app_eshop_index')]
  16.     public function index(
  17.         ProductRepository  $productRepository,
  18.         Request            $request,
  19.         PaginatorInterface $paginator,
  20.         Session            $session,
  21.         EshopFilter $productFilter
  22.     ): Response
  23.     {
  24. // clear filter
  25.         if ($productFilter->clearFilter($session$request) == true) {
  26.             return $this->redirect($this->generateUrl('app_eshop_index'));
  27.         }
  28.         // ulozeni strankovace
  29.         $paginationSettings $productFilter->storePaginationSettings($session$request);
  30.         $data = [
  31.             'material' => $session->get('filter-eshop-material'null),
  32.             'category' => $session->get('filter-eshop-category'null),
  33.             'priceFrom' => $session->get('filter-eshop-price-from'null),
  34.             'priceTo' => $session->get('filter-eshop-price-to'null),
  35.             'orderBy' => $session->get('filter-eshop-order-by''ASC'),
  36.         ];
  37.         $formFilter $this->createForm(EshopFilterType::class, $data, [
  38.             'action' => $this->generateUrl('app_eshop_index'),
  39.             'method' => 'post',
  40.             'request' => $request,
  41.             'is_admin' => $this->isGranted('ROLE_ADMIN'$this->getUser())
  42.         ]);
  43.         // ulozim filtr do session
  44.         $productFilter->storeFilter($formFilter$request$session);
  45.         // aplikace filtru do vybirani dat
  46.         $queryBuilder $productRepository->createQueryBuilder('p');
  47.         /** @var Product[] $products */
  48.         $products $productFilter->applyFilter($session$request$queryBuilder$paginator);
  49.         return $this->render('eshop/index.html.twig', [
  50.             'products' => $products,
  51.             'filter' => $formFilter->createView(),
  52.             'pageSize' => $paginationSettings['pageSize']
  53.         ]);
  54.     }
  55.     #[Route('/eshop/product/{product}'name'app_eshop_product_detail')]
  56.     public function detail(Product $product){
  57.         return $this->render('eshop/product_detail.html.twig', [
  58.             'product' => $product,
  59.         ]);
  60.     }
  61. }