src/Controller/Document/SubCategoryPageController.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Document;
  3. use App\Classes\DataMapper\Document\ProductListingDataMapper;
  4. use App\ElasticSearch\Paginator\ElasticSearchPaginator;
  5. use Knp\Component\Pager\PaginatorInterface;
  6. use Pimcore\HttpKernel\BundleLocator\NotFoundException;
  7. use Pimcore\Navigation\Builder;
  8. use Pimcore\Templating\Model\ViewModel;
  9. use App\Classes\Zend\Filter;
  10. use App\Service\Contract\SearchServiceContract;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  12. use Symfony\Component\HttpFoundation\Request;
  13. class SubCategoryPageController extends AbstractDocumentController
  14. {
  15.     /**
  16.      * @var SearchServiceContract
  17.      */
  18.     protected $searchService;
  19.     /**
  20.      * @var PaginatorInterface
  21.      */
  22.     private $paginator;
  23.     public function __construct(Builder $navigationBuilderSearchServiceContract $searchServicePaginatorInterface $paginator)
  24.     {
  25.         parent::__construct($navigationBuilder);
  26.         $this->searchService $searchService;
  27.         $this->paginator $paginator;
  28.     }
  29.     #[Template()]
  30.     public function defaultAction(Request $request)
  31.     {
  32.         $ecommerceFactory \Pimcore\Bundle\EcommerceFrameworkBundle\Factory::getInstance();
  33.         $productListing $this->searchService->getCurrentSearchListing($request);
  34.         $templateParams = [];
  35.         $params array_merge($request->query->all(), $request->attributes->all());
  36.         $templateParams['productListing'] = $productListing;
  37.         $filterDefinition $this->document->getProperty('products_filter');
  38.         if (!$filterDefinition) {
  39.             throw new NotFoundException("Missing filter for \"{$this->document->getTitle()}\"");
  40.         }
  41.         $filterService $ecommerceFactory->getFilterService();
  42.         (new \Pimcore\Bundle\EcommerceFrameworkBundle\FilterService\ListHelper)->setupProductList($filterDefinition$productListing$params$filterServicetruetrue);
  43.         $templateParams['filterService'] = $filterService;
  44.         $templateParams['filterDefinition'] = $filterDefinition;
  45.         $paginator $this->paginator->paginate($productListing$request->get('page'1), 20);
  46.         $paginator->setItems(
  47.             ProductListingDataMapper::list(
  48.                 $paginator->getItems()
  49.             )->toArray($request)
  50.         );
  51.         $paginator->setPageRange(5);
  52.         $templateParams['paginator'] = $paginator;
  53.         $templateParams['paginationVariables'] = $paginator->getPaginationData();
  54.         return $templateParams;
  55.     }
  56. }