vendor/kunstmaan/pagepart-bundle/Twig/Extension/PageTemplateTwigExtension.php line 40

Open in your IDE?
  1. <?php
  2. namespace Kunstmaan\PagePartBundle\Twig\Extension;
  3. use Kunstmaan\PagePartBundle\Helper\HasPageTemplateInterface;
  4. use Kunstmaan\PagePartBundle\PageTemplate\PageTemplateConfigurationService;
  5. use Twig\Environment;
  6. use Twig\Extension\AbstractExtension;
  7. use Twig\TwigFunction;
  8. final class PageTemplateTwigExtension extends AbstractExtension
  9. {
  10.     /**
  11.      * @var PageTemplateConfigurationService
  12.      */
  13.     private $templateConfiguration;
  14.     public function __construct(PageTemplateConfigurationService $templateConfiguration)
  15.     {
  16.         $this->templateConfiguration $templateConfiguration;
  17.     }
  18.     public function getFunctions(): array
  19.     {
  20.         return [
  21.             new TwigFunction('render_pagetemplate', [$this'renderPageTemplate'], ['needs_environment' => true'needs_context' => true'is_safe' => ['html']]),
  22.             new TwigFunction('getpagetemplate', [$this'getPageTemplate']),
  23.             new TwigFunction('render_pagetemplate_configuration', [$this'renderPageTemplateConfiguration'], ['needs_environment' => true'needs_context' => true'is_safe' => ['html']]),
  24.         ];
  25.     }
  26.     public function renderPageTemplate(Environment $env, array $twigContextHasPageTemplateInterface $page, array $parameters = []): string
  27.     {
  28.         $pageTemplates $this->templateConfiguration->getPageTemplates($page);
  29.         $pageTemplate $pageTemplates[$this->getPageTemplate($page)];
  30.         $template $env->load($pageTemplate->getTemplate());
  31.         return $template->render(array_merge($parameters$twigContext));
  32.     }
  33.     /**
  34.      * @param HasPageTemplateInterface $page The page
  35.      */
  36.     public function getPageTemplate(HasPageTemplateInterface $page): string
  37.     {
  38.         return $this->templateConfiguration->findOrCreateFor($page)->getPageTemplate();
  39.     }
  40.     public function renderPageTemplateConfiguration(Environment $env, array $twigContextHasPageTemplateInterface $page, array $parameters = []): string
  41.     {
  42.         $pageTemplates $this->templateConfiguration->getPageTemplates($page);
  43.         $pageTemplate $pageTemplates[$this->getPageTemplate($page)];
  44.         $template $env->load($parameters['template']);
  45.         return $template->render(array_merge(['pageTemplate' => $pageTemplate], $twigContext));
  46.     }
  47.     public function getName(): string
  48.     {
  49.         return 'pagetemplate_twig_extension';
  50.     }
  51. }