vendor/ibexa/core/src/lib/MVC/Symfony/View/ParametersInjector/ViewbaseLayout.php line 41

Open in your IDE?
  1. <?php
  2. /**
  3. * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4. * @license For full copyright and license information view LICENSE file distributed with this source code.
  5. */
  6. namespace Ibexa\Core\MVC\Symfony\View\ParametersInjector;
  7. use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface;
  8. use Ibexa\Core\MVC\Symfony\View\Event\FilterViewParametersEvent;
  9. use Ibexa\Core\MVC\Symfony\View\ViewEvents;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. /**
  12. * Injects the 'viewBaseLayout' view parameter, set by the container parameter.
  13. */
  14. class ViewbaseLayout implements EventSubscriberInterface
  15. {
  16. /** @var string */
  17. private $viewbaseLayout;
  18. /** @var \Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface */
  19. private $configResolver;
  20. public function __construct($viewbaseLayout, ConfigResolverInterface $configResolver)
  21. {
  22. $this->viewbaseLayout = $viewbaseLayout;
  23. $this->configResolver = $configResolver;
  24. }
  25. public static function getSubscribedEvents()
  26. {
  27. return [ViewEvents::FILTER_VIEW_PARAMETERS => 'injectViewbaseLayout'];
  28. }
  29. private function getPageLayout(): string
  30. {
  31. return $this->configResolver->getParameter('page_layout');
  32. }
  33. public function injectViewbaseLayout(FilterViewParametersEvent $event)
  34. {
  35. $pageLayout = $this->getPageLayout();
  36. $event->getParameterBag()->set('view_base_layout', $this->viewbaseLayout);
  37. // @deprecated since 8.0. Use `page_layout` instead
  38. $event->getParameterBag()->set('pagelayout', $pageLayout);
  39. $event->getParameterBag()->set('page_layout', $pageLayout);
  40. }
  41. }
  42. class_alias(ViewbaseLayout::class, 'eZ\Publish\Core\MVC\Symfony\View\ParametersInjector\ViewbaseLayout');