public function loadPreviewAction() { $conditions = $this->Request()->getParam('conditions'); $conditions = json_decode($conditions, true); $sorting = $this->Request()->getParam('sort'); $criteria = new Criteria(); /** @var RepositoryInterface $streamRepo */ $streamRepo = $this->get('shopware_product_stream.repository'); $sorting = $streamRepo->unserialize($sorting); foreach ($sorting as $sort) { $criteria->addSorting($sort); } $conditions = $streamRepo->unserialize($conditions); foreach ($conditions as $condition) { $criteria->addCondition($condition); } $criteria->offset($this->Request()->getParam('start', 0)); $criteria->limit($this->Request()->getParam('limit', 20)); $context = $this->createContext($this->Request()->getParam('shopId'), $this->Request()->getParam('currencyId'), $this->Request()->getParam('customerGroupKey')); $criteria->addBaseCondition(new CustomerGroupCondition([$context->getCurrentCustomerGroup()->getId()])); $category = $context->getShop()->getCategory()->getId(); $criteria->addBaseCondition(new CategoryCondition([$category])); $result = Shopware()->Container()->get('shopware_search.product_search')->search($criteria, $context); $products = array_values($result->getProducts()); $this->View()->assign(['success' => true, 'data' => $products, 'total' => $result->getTotalCount()]); }
/** * @param Request $request * @param Criteria $criteria */ private function addLimit(Request $request, Criteria $criteria) { $limit = $request->getParam('sPerPage', (int) $this->config->get('articlesPerPage')); $criteria->limit($limit); }