src/Controller/ProductCategoryController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Psr\Log\LoggerInterface;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use App\Entity\Category;
  9. use App\Entity\SearchFilter\ProductCategorySearchFilter;
  10. use App\Form\BackOffice\SearchFilter\ProductCategorySearchType;
  11. use App\Repository\CategoryRepository;
  12. use App\Repository\OrderRepository;
  13. use App\Repository\ProductRepository;
  14. use App\Repository\SubcategoryRepository;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. #[Route('/category')]
  17. class ProductCategoryController extends AbstractController
  18. {
  19.     private $logger;
  20.     public function __construct(
  21.         LoggerInterface $logger
  22.     ) {
  23.         $this->logger $logger;
  24.     }
  25.     #[Route('/{slug}/{subcategorySlug?}'name'product_category_show'methods: ["GET"])]
  26.     public function aboutUs(
  27.         Request $request,
  28.         Category $category,
  29.         ?string $subcategorySlug null,
  30.         CategoryRepository $categoryRepository,
  31.         SubcategoryRepository $subCategoryRepository,
  32.         ProductRepository $productRepository,
  33.         PaginatorInterface $paginator,
  34.         OrderRepository $orderRepository,
  35.     ): Response {
  36.         $this->logger->debug(__METHOD__);
  37.         $products = array();
  38.         $subcategory=null;
  39.         if ($subcategorySlug) {
  40.             $subcategory $subCategoryRepository->findOneBySlug($subcategorySlug);
  41.         }
  42.         if($subcategory){
  43.            $products $productRepository->getBySubCategory([$subcategory->getId()]);
  44.         }else{
  45.             $products $productRepository->getByCategory([$category->getId()]);
  46.         }
  47.         // list of categories anb subcategories
  48.         $categories $categoryRepository->getActiveCategoriesWithSubcategories();
  49.         
  50.         // list of product groups pending order
  51.         $groupsProducts $orderRepository->getPendingProductGroupsOrders();
  52.         return $this->render('category/show.html.twig'compact(
  53.         'products''category','categories','subcategory','groupsProducts'));
  54.     }
  55. /*
  56.     // category products with province filter
  57.     #[Route('/{slug}', name: 'product_category_show', methods: ["GET"])]
  58.     public function aboutUs(
  59.         Request $request,
  60.         Category $category,
  61.         CategoryRepository $categoryRepository,
  62.         ProductRepository $productRepository,
  63.         PaginatorInterface $paginator
  64.     ): Response {
  65.         $this->logger->debug(__METHOD__);
  66.         $filterForm = new ProductCategorySearchFilter();
  67.         $filterForm->setSort($request->query->get('sort'));
  68.         $filterForm->setDirection($request->query->get('direction'));
  69.         $filterForm->setFilter(ProductCategorySearchFilter::FILTER_ACTIVE);
  70.         $searchForm = $this->createForm(ProductCategorySearchType::class, $filterForm, [
  71.             'method' => 'GET',
  72.         ]);
  73.         $searchForm->handleRequest($request);
  74.         $query = $productRepository->getByCategoryAndFilter($category->getId(), $filterForm);
  75.         $pagination = $paginator->paginate(
  76.             $query,
  77.             $request->query->get('page', 1),
  78.             1000
  79.         );
  80.         return $this->render('category/show.html.twig', [
  81.             'products' => $pagination,
  82.             'category' => $category,
  83.             'searchForm' => $searchForm->createView(),
  84.         ]);
  85.     }
  86. */
  87. }