<?php
declare(strict_types=1);
namespace Proclane\WegmannTheme\Subscriber;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Storefront\Pagelet\Header\HeaderPageletLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\System\SystemConfig\SystemConfigService;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
class HeaderPageletLoaderSubscriber implements EventSubscriberInterface
{
private SystemConfigService $systemConfigService;
private EntityRepositoryInterface $categoryRepository;
public function __construct(
SystemConfigService $systemConfigService,
EntityRepositoryInterface $categoryRepository
) {
$this->systemConfigService = $systemConfigService;
$this->categoryRepository = $categoryRepository;
}
public static function getSubscribedEvents(): array
{
return [
HeaderPageletLoadedEvent::class => 'onLoaded',
];
}
public function onLoaded(HeaderPageletLoadedEvent $event): void
{
$page = $event->getPagelet();
$request = $event->getRequest();
$route = $request->attributes->get('_route');
$context = $event->getContext();
$categoryIds = $this->systemConfigService->get('ProclaneWegmannTheme.config.selectedCategoriesForCustomerMenu');
if (!$categoryIds) return;
$criteria = new Criteria($categoryIds);
$categories = $this->categoryRepository->search($criteria, $context)?->getEntities();
if ($categories) {
$page->addExtension('additionalCategoriesForCustomer', $categories);
}
}
}