vendor/ibexa/core/src/lib/MVC/Symfony/View/Renderer/TemplateRenderer.php line 39

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\Renderer;
  7. use Closure;
  8. use Ibexa\Core\MVC\Exception\NoViewTemplateException;
  9. use Ibexa\Core\MVC\Symfony\Event\PreContentViewEvent;
  10. use Ibexa\Core\MVC\Symfony\MVCEvents;
  11. use Ibexa\Core\MVC\Symfony\View\Renderer;
  12. use Ibexa\Core\MVC\Symfony\View\View;
  13. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  14. use Twig\Environment;
  15. class TemplateRenderer implements Renderer
  16. {
  17.     /** @var \Twig\Environment */
  18.     protected $templateEngine;
  19.     /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface */
  20.     protected $eventDispatcher;
  21.     public function __construct(Environment $templateEngineEventDispatcherInterface $eventDispatcher)
  22.     {
  23.         $this->templateEngine $templateEngine;
  24.         $this->eventDispatcher $eventDispatcher;
  25.     }
  26.     /**
  27.      * @param \Ibexa\Core\MVC\Symfony\View\View $view
  28.      *
  29.      * @throws \Ibexa\Core\MVC\Exception\NoViewTemplateException
  30.      *
  31.      * @return string
  32.      */
  33.     public function render(View $view)
  34.     {
  35.         $this->eventDispatcher->dispatch(new PreContentViewEvent($view), MVCEvents::PRE_CONTENT_VIEW);
  36.         $templateIdentifier $view->getTemplateIdentifier();
  37.         if ($templateIdentifier instanceof Closure) {
  38.             return $templateIdentifier($view->getParameters());
  39.         }
  40.         if ($view->getTemplateIdentifier() === null) {
  41.             throw new NoViewTemplateException($view);
  42.         }
  43.         return $this->templateEngine->render(
  44.             $view->getTemplateIdentifier(),
  45.             $view->getParameters()
  46.         );
  47.     }
  48. }
  49. class_alias(TemplateRenderer::class, 'eZ\Publish\Core\MVC\Symfony\View\Renderer\TemplateRenderer');