vendor/zenit/gravity-set-2/src/Subscriber/CategoryCustomFieldMediaSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace zenit\PlatformGravitySet2\Subscriber;
  3. use Shopware\Core\Content\Category\Event\CategoryLoadedEvent;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Shopware\Core\Framework\Context;
  7. use Psr\Log\LoggerInterface;
  8. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
  9. use Shopware\Core\Content\Category\CategoryEvents;
  10. class CategoryCustomFieldMediaSubscriber implements EventSubscriberInterface
  11. {
  12.     private $mediaRepository;
  13.     private $logger;
  14.     public function __construct(EntityRepository $mediaRepositoryLoggerInterface $logger)
  15.     {
  16.         $this->mediaRepository $mediaRepository;
  17.         $this->logger $logger;
  18.     }
  19.     public static function getSubscribedEvents()
  20.     {
  21.         return [
  22.             CategoryEvents::CATEGORY_LOADED_EVENT => 'entityLoaded',
  23.             'sales_channel.' CategoryEvents::CATEGORY_LOADED_EVENT => 'entityLoaded',
  24.         ];
  25.     }
  26.     public function entityLoaded(EntityLoadedEvent $event)
  27.     {
  28.        
  29.         $categories $event->getEntities();
  30.         $context $event->getContext();
  31.         foreach ($categories as $category) {
  32.             $this->logger->info('CategoryLoadedEvent triggered', ['categoryId' => $category]);
  33.             $customFields $category->getCustomFields();
  34.             if (isset($customFields['navigation_image'])) {
  35.                 $mediaId $customFields['navigation_image'];
  36.                 $media $this->mediaRepository->search(
  37.                     (new \Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria([$mediaId])),
  38.                     $context
  39.                 )->get($mediaId);
  40.                 if ($media) {
  41.                     $category->addExtension('navigationImage'$media);
  42.                 }
  43.             }
  44.            
  45.         }
  46.     }
  47. }