vendor/shopware/storefront/Pagelet/Footer/FooterPageletLoader.php line 34

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Storefront\Pagelet\Footer;
  3. use Shopware\Core\Content\Category\Service\NavigationLoaderInterface;
  4. use Shopware\Core\Framework\Log\Package;
  5. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  6. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. /**
  9.  * Do not use direct or indirect repository calls in a PageletLoader. Always use a store-api route to get or put data.
  10.  */
  11. #[Package('storefront')]
  12. class FooterPageletLoader implements FooterPageletLoaderInterface
  13. {
  14.     /**
  15.      * @internal
  16.      */
  17.     public function __construct(
  18.         private readonly EventDispatcherInterface $eventDispatcher,
  19.         private readonly NavigationLoaderInterface $navigationLoader
  20.     ) {
  21.     }
  22.     public function load(Request $requestSalesChannelContext $salesChannelContext): FooterPagelet
  23.     {
  24.         $footerId $salesChannelContext->getSalesChannel()->getFooterCategoryId();
  25.         $tree null;
  26.         if ($footerId) {
  27.             $navigationId $request->get('navigationId'$footerId);
  28.             $tree $this->navigationLoader->load($navigationId$salesChannelContext$footerId);
  29.         }
  30.         $pagelet = new FooterPagelet($tree);
  31.         $this->eventDispatcher->dispatch(
  32.             new FooterPageletLoadedEvent($pagelet$salesChannelContext$request)
  33.         );
  34.         return $pagelet;
  35.     }
  36. }