vendor/se7enxweb/exponential-platform-dxp-core/src/contracts/MVC/Templating/BaseRenderStrategy.php line 36

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. declare(strict_types=1);
  7. namespace Ibexa\Contracts\Core\MVC\Templating;
  8. use Ibexa\Core\Base\Exceptions\InvalidArgumentException;
  9. use Ibexa\Core\MVC\Symfony\SiteAccess;
  10. use Symfony\Component\HttpFoundation\RequestStack;
  11. use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface;
  12. abstract class BaseRenderStrategy implements RenderStrategy
  13. {
  14. /** @var \Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface[] */
  15. protected $fragmentRenderers;
  16. /** @var string */
  17. protected $defaultRenderer;
  18. /** @var \Ibexa\Core\MVC\Symfony\SiteAccess */
  19. protected $siteAccess;
  20. /** @var \Symfony\Component\HttpFoundation\RequestStack */
  21. protected $requestStack;
  22. public function __construct(
  23. iterable $fragmentRenderers,
  24. string $defaultRenderer,
  25. SiteAccess $siteAccess,
  26. RequestStack $requestStack
  27. ) {
  28. foreach ($fragmentRenderers as $fragmentRenderer) {
  29. if (!isset($this->fragmentRenderers[$fragmentRenderer->getName()])) {
  30. $this->fragmentRenderers[$fragmentRenderer->getName()] = $fragmentRenderer;
  31. }
  32. }
  33. $this->defaultRenderer = $defaultRenderer;
  34. $this->siteAccess = $siteAccess;
  35. $this->requestStack = $requestStack;
  36. }
  37. protected function getFragmentRenderer(string $name): FragmentRendererInterface
  38. {
  39. if (empty($this->fragmentRenderers[$name])) {
  40. throw new InvalidArgumentException('method', sprintf(
  41. 'Fragment renderer "%s" does not exist.',
  42. $name
  43. ));
  44. }
  45. return $this->fragmentRenderers[$name];
  46. }
  47. }
  48. class_alias(BaseRenderStrategy::class, 'eZ\Publish\SPI\MVC\Templating\BaseRenderStrategy');