custom/plugins/FourtwosixThemeCustomization/src/Subscriber/GetManufacturersSubscriber.php line 31

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace FourtwosixThemeCustomization\Subscriber;
  3. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Shopware\Storefront\Page\GenericPageLoadedEvent;
  6. use Shopware\Storefront\Page\PageLoadedEvent;
  7. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  8. use Shopware\Core\Framework\Context;
  9. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  10. use Shopware\Core\Framework\DataAbstractionLayer\Search\EntitySearchResult;
  11. use Shopware\Core\Framework\DataAbstractionLayer\Search\Sorting\FieldSorting;
  12. class GetManufacturersSubscriber implements EventSubscriberInterface
  13. {
  14.     private EntityRepositoryInterface $productManufacturerRepository;
  15.     public function __construct(EntityRepositoryInterface $productManufacturerRepository)
  16.     {
  17.         $this->productManufacturerRepository $productManufacturerRepository;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             GenericPageLoadedEvent::class => 'onStorefrontPageLoaded'
  23.         ];
  24.     }
  25.     public function onStorefrontPageLoaded(PageLoadedEvent $event)
  26.     {
  27.         $page $event->getPage();
  28.         $context $event->getContext();
  29.         $extensions $page->getExtensions();
  30.         $manufacturers $this->getAllProductManufacturers($context);
  31.         $extensions['allManufacturers'] = $manufacturers->getElements();
  32.         $page->setExtensions($extensions);
  33.     }
  34.     private function getAllProductManufacturers(Context $context): EntitySearchResult
  35.     {
  36.         $criteria = new Criteria();
  37.         $criteria->addSorting(new FieldSorting('name'));  
  38.         $productManufacturers $this->productManufacturerRepository->search($criteria$context);
  39.         return $productManufacturers;
  40.     }
  41. }