custom/plugins/TwigelBonusProgram/src/Subscriber/ProductListingLoaded.php line 34

Open in your IDE?
  1. <?php
  2. namespace Twigel\BonusProgram\Subscriber;
  3. use Shopware\Core\Content\Product\Events\ProductListingResultEvent;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class ProductListingLoaded implements EventSubscriberInterface
  8. {
  9.     /** @var EntityRepository */
  10.     private $productBonusRepository;
  11.     public function __construct(
  12.         EntityRepository $productBonusRepository
  13.     )
  14.     {
  15.         $this->productBonusRepository $productBonusRepository;
  16.     }
  17.     /**
  18.      * @inheritDoc
  19.      */
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             ProductListingResultEvent::class => 'onListingLoad'
  24.         ];
  25.     }
  26.     public function onListingLoad(ProductListingResultEvent $event)
  27.     {
  28.         $criteria = new Criteria();
  29.         $criteria->setLimit(5);
  30.         $criteria->addAssociations(["product.cover"]);
  31.         $products $this->productBonusRepository->search($criteria$event->getContext());
  32.         if ($products->getTotal()){
  33.             $event->getContext()->addExtension('sidebarBonusProducts' $products);
  34.         }
  35.     }
  36. }