ProductSearchResult example



        $criteria = new Criteria();
        foreach ($selection as $groupId => $optionId) {
            $criteria->addBaseCondition(
                new VariantCondition([(int) $optionId], true, (int) $groupId)
            );
        }

        $service = Shopware()->Container()->get(VariantListingPriceServiceInterface::class);

        $result = new ProductSearchResult(
            [$product->getNumber() => $product],
            1,
            [],
            $criteria,
            $this->contextService->getShopContext()
        );

        $service->updatePrices($criteria$result$this->contextService->getShopContext());

        if ($product->displayFromPrice()) {
            $data['priceStartingFrom'] = $product->getListingPrice()->getCalculatedPrice();
        }
$result = null;

        // If the search for product numbers is active, do that first         if ((int) $this->get(\Shopware_Components_Config::class)->get('activateNumberSearch') === 1) {
            // Check if search-term is a valid product-number             /** @var ListProduct|null $directHit */
            $directHit = $this->get(\Shopware\Bundle\StoreFrontBundle\Service\ListProductServiceInterface::class)
                ->get($term$context);

            if ($directHit) {
                /** @var ProductSearchResult $result */
                $result = new ProductSearchResult([$directHit], 1, []$criteria$context);
            }
        }

        // If number search is inactive or didn't find anything, do a regular search         if (!$result || $result->getTotalCount() === 0) {
            $result = $this->get(\Shopware\Bundle\SearchBundle\ProductSearchInterface::class)->search($criteria$context);
        }

        return $result;
    }
}

    public function search(
        Criteria $criteria,
        ShopContextInterface $context
    ) {
        $numberResult = $this->searchGateway->search($criteria$context);

        $numbers = array_keys($numberResult->getProducts());
        $products = $this->productService->getList($numbers$context);
        $products = $this->assignAttributes($products$numberResult->getProducts());

        $result = new ProductSearchResult(
            $products,
            $numberResult->getTotalCount(),
            $numberResult->getFacets(),
            $criteria,
            $context
        );

        $result->addAttributes($numberResult->getAttributes());

        return $result;
    }

    
if (!$this->Request()->getParam('loadProducts')) {
            $criteria->limit(1);
        }

        $result = $search->search($criteria$context);

        if (!$this->Request()->get('loadFacets')) {
            return $result;
        }

        return new ProductSearchResult(
            $result->getProducts(),
            $result->getTotalCount(),
            $facetFilter->filter($result->getFacets()$criteria),
            $criteria,
            $context
        );
    }

    private function fetchCategoryListing(): ProductSearchResult
    {
        $context = $this->container->get(ContextServiceInterface::class)->getShopContext();

        
Home | Imprint | This part of the site doesn't use cookies.