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

Open in your IDE?
  1. <?php
  2. namespace Twigel\BonusProgram\Subscriber;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  6. use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Twigel\BonusProgram\Core\Content\ProductBonus\ProductBonusEntity;
  9. class ProductDetailLoaded implements EventSubscriberInterface
  10. {
  11.     /** @var EntityRepository */
  12.     private $bonusProductRepository;
  13.     public function __construct(EntityRepository $bonusProductRepository)
  14.     {
  15.         $this->bonusProductRepository $bonusProductRepository;
  16.     }
  17.     /**
  18.      * @inheritDoc
  19.      */
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             ProductPageLoadedEvent::class => "productLoaded"
  24.         ];
  25.     }
  26.     public function productLoaded(ProductPageLoadedEvent $event){
  27.         $productId $event->getPage()->getProduct()->getId();
  28.         $criteria = new Criteria();
  29.         $criteria->addFilter(new EqualsFilter('productId'$productId));
  30.         /** @var ProductBonusEntity $bonus */
  31.         $bonus $this->bonusProductRepository->search($criteria$event->getContext())->first();
  32.         if(!$bonus){
  33.             return;
  34.         }
  35.         $event->getPage()->assign(['productBonus' => $bonus->getBonusAmount()]);
  36.     }
  37. }