vendor/crehler/mojebambino-catalog/src/Service/CatalogReader/Page/CatalogPage/CatalogPageLoader.php line 35

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @copyright 2020 Crehler Sp. z o. o.
  5.  * @link https://crehler.com/
  6.  * @support support@crehler.com
  7.  *
  8.  * @author Mateusz FlasiƄski
  9.  *
  10.  * For the full copyright and license information, please view the LICENSE
  11.  * file that was distributed with this source code.
  12.  */
  13. namespace Crehler\Catalog\Service\CatalogReader\Page\CatalogPage;
  14. use Crehler\Catalog\Controller\StoreApi\AbstractCatalogPageRoute;
  15. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  16. use Shopware\Storefront\Page\GenericPageLoaderInterface;
  17. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  18. use Symfony\Component\HttpFoundation\Request;
  19. class CatalogPageLoader implements CatalogPageInterface
  20. {
  21.     protected GenericPageLoaderInterface $genericLoader;
  22.     protected EventDispatcherInterface $eventDispatcher;
  23.     protected AbstractCatalogPageRoute $catalogPageRoute;
  24.     public function __construct(GenericPageLoaderInterface $genericLoaderEventDispatcherInterface $eventDispatcherAbstractCatalogPageRoute $catalogPageRoute)
  25.     {
  26.         $this->genericLoader $genericLoader;
  27.         $this->eventDispatcher $eventDispatcher;
  28.         $this->catalogPageRoute $catalogPageRoute;
  29.     }
  30.     public function load(Request $requestSalesChannelContext $context): CatalogPage
  31.     {
  32.         $page $this->genericLoader->load($request$context);
  33.         $page CatalogPage::createFrom($page);
  34.         $catalogPage $this->catalogPageRoute->load($request$context)->getPage();
  35.         $page->setCatalog($catalogPage->getCatalog());
  36.         $page->setCatalogPageEntity($catalogPage->getCatalogPageEntity());
  37.         $page->setCatalogProductsIds($catalogPage->getCatalogProductsIds());
  38.         $page->setCatalogPages($catalogPage->getCatalogPages());
  39.         $this->eventDispatcher->dispatch(
  40.             new CatalogPageLoadedEvent($page$context$request)
  41.         );
  42.         // TODO add meta information
  43.         return $page;
  44.     }
  45. }