custom/static-plugins/NdStl/src/Subscriber/AddLookToProductPageData.php line 30

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Nd\Stl\Subscriber;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  6. use Shopware\Core\Framework\Struct\ArrayStruct;
  7. use Shopware\Core\Framework\Struct\Struct;
  8. use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class AddLookToProductPageData implements EventSubscriberInterface
  11. {
  12.     private EntityRepositoryInterface $lookProductRepository;
  13.     public function __construct(EntityRepositoryInterface $lookProductRepository)
  14.     {
  15.         $this->lookProductRepository $lookProductRepository;
  16.     }
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             ProductPageLoadedEvent::class => 'addLookToProductPage'
  21.         ];
  22.     }
  23.     public function addLookToProductPage(ProductPageLoadedEvent $event): void
  24.     {
  25.         $productPage $event->getPage();
  26.         $product $productPage->getProduct();
  27.         $criteria = new Criteria();
  28.         $criteria->addFilter(new EqualsFilter('productId'$product->getId()));
  29.         $criteria->getAssociation("look");
  30.         $criteria->getAssociation("look.cover");
  31.         $criteria->getAssociation("look.fashionGuideAvatarMedia");
  32.         $lookProducts $this->lookProductRepository->search($criteria$event->getContext());
  33.         if($lookProducts->count() >= 1){
  34.             $productPage->addExtension('look'$lookProducts->first()->getLook());
  35.         }
  36.     }
  37. }