vendor/netgen/layouts-core/lib/View/ViewRenderer.php line 34

  1. <?php
  2. declare(strict_types=1);
  3. namespace Netgen\Layouts\View;
  4. use Netgen\Layouts\Event\CollectViewParametersEvent;
  5. use Netgen\Layouts\Event\LayoutsEvents;
  6. use Netgen\Layouts\Utils\BackwardsCompatibility\EventDispatcherProxy;
  7. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  8. use Twig\Environment;
  9. use function sprintf;
  10. final class ViewRenderer implements ViewRendererInterface
  11. {
  12.     private EventDispatcherProxy $eventDispatcher;
  13.     private Environment $twig;
  14.     public function __construct(EventDispatcherInterface $eventDispatcherEnvironment $twig)
  15.     {
  16.         $this->eventDispatcher = new EventDispatcherProxy($eventDispatcher);
  17.         $this->twig $twig;
  18.     }
  19.     public function renderView(ViewInterface $view): string
  20.     {
  21.         $event = new CollectViewParametersEvent($view);
  22.         $this->eventDispatcher->dispatch($eventLayoutsEvents::RENDER_VIEW);
  23.         $view->addParameters($event->getParameters());
  24.         $event = new CollectViewParametersEvent($view);
  25.         $this->eventDispatcher->dispatch($eventsprintf('%s.%s'LayoutsEvents::RENDER_VIEW$view::getIdentifier()));
  26.         $view->addParameters($event->getParameters());
  27.         $viewTemplate $view->getTemplate();
  28.         if ($viewTemplate === null) {
  29.             return '';
  30.         }
  31.         return $this->twig->render($viewTemplate$view->getParameters());
  32.     }
  33. }