vendor/shopware/storefront/Page/Maintenance/MaintenancePageLoader.php line 51

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Storefront\Page\Maintenance;
  3. use Shopware\Core\Content\Cms\Exception\PageNotFoundException;
  4. use Shopware\Core\Content\Cms\SalesChannel\SalesChannelCmsPageLoaderInterface;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  6. use Shopware\Core\Framework\Log\Package;
  7. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  8. use Shopware\Storefront\Page\GenericPageLoaderInterface;
  9. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. #[Package('storefront')]
  12. class MaintenancePageLoader
  13. {
  14.     /**
  15.      * @var GenericPageLoaderInterface
  16.      */
  17.     private $genericLoader;
  18.     /**
  19.      * @var EventDispatcherInterface
  20.      */
  21.     private $eventDispatcher;
  22.     /**
  23.      * @var SalesChannelCmsPageLoaderInterface
  24.      */
  25.     private $cmsPageLoader;
  26.     /**
  27.      * @internal
  28.      */
  29.     public function __construct(
  30.         SalesChannelCmsPageLoaderInterface $cmsPageLoader,
  31.         GenericPageLoaderInterface $genericLoader,
  32.         EventDispatcherInterface $eventDispatcher
  33.     ) {
  34.         $this->eventDispatcher $eventDispatcher;
  35.         $this->genericLoader $genericLoader;
  36.         $this->cmsPageLoader $cmsPageLoader;
  37.     }
  38.     /**
  39.      * @throws PageNotFoundException
  40.      */
  41.     public function load(string $cmsErrorLayoutIdRequest $requestSalesChannelContext $context): MaintenancePage
  42.     {
  43.         try {
  44.             $page $this->genericLoader->load($request$context);
  45.             $page MaintenancePage::createFrom($page);
  46.             $pages $this->cmsPageLoader->load($request, new Criteria([$cmsErrorLayoutId]), $context);
  47.             if (!$pages->has($cmsErrorLayoutId)) {
  48.                 throw new PageNotFoundException($cmsErrorLayoutId);
  49.             }
  50.             $page->setCmsPage($pages->get($cmsErrorLayoutId));
  51.             $this->eventDispatcher->dispatch(new MaintenancePageLoadedEvent($page$context$request));
  52.             return $page;
  53.         } catch (\Exception $e) {
  54.             throw new PageNotFoundException($cmsErrorLayoutId);
  55.         }
  56.     }
  57. }