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

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. /**
  9.  * PagePartTwigExtension
  10.  *
  11.  * @final since 5.4
  12.  */
  13. class PageTemplateTwigExtension extends AbstractExtension
  14. {
  15.     /**
  16.      * @var PageTemplateConfigurationService
  17.      */
  18.     private $templateConfiguration;
  19.     public function __construct(PageTemplateConfigurationService $templateConfiguration)
  20.     {
  21.         $this->templateConfiguration $templateConfiguration;
  22.     }
  23.     /**
  24.      * @return array
  25.      */
  26.     public function getFunctions()
  27.     {
  28.         return array(
  29.             new TwigFunction('render_pagetemplate', [$this'renderPageTemplate'], ['needs_environment' => true'needs_context' => true'is_safe' => ['html']]),
  30.             new TwigFunction('getpagetemplate', [$this'getPageTemplate']),
  31.             new TwigFunction('render_pagetemplate_configuration', [$this'renderPageTemplateConfiguration'], ['needs_environment' => true'needs_context' => true'is_safe' => ['html']]),
  32.         );
  33.     }
  34.     /**
  35.      * @param Environment              $env
  36.      * @param array                    $twigContext
  37.      * @param HasPageTemplateInterface $page
  38.      * @param array                    $parameters
  39.      *
  40.      * @return string
  41.      */
  42.     public function renderPageTemplate(Environment $env, array $twigContextHasPageTemplateInterface $page, array $parameters = array())
  43.     {
  44.         $pageTemplates $this->templateConfiguration->getPageTemplates($page);
  45.         $pageTemplate $pageTemplates[$this->getPageTemplate($page)];
  46.         $template $env->load($pageTemplate->getTemplate());
  47.         return $template->render(array_merge($parameters$twigContext));
  48.     }
  49.     /**
  50.      * @param HasPageTemplateInterface $page The page
  51.      *
  52.      * @return string
  53.      */
  54.     public function getPageTemplate(HasPageTemplateInterface $page)
  55.     {
  56.         return $this->templateConfiguration->findOrCreateFor($page)->getPageTemplate();
  57.     }
  58.     /**
  59.      * @param Environment              $env
  60.      * @param array                    $twigContext
  61.      * @param HasPageTemplateInterface $page
  62.      * @param array                    $parameters
  63.      *
  64.      * @return string
  65.      */
  66.     public function renderPageTemplateConfiguration(Environment $env, array $twigContextHasPageTemplateInterface $page, array $parameters = array())
  67.     {
  68.         $pageTemplates $this->templateConfiguration->getPageTemplates($page);
  69.         $pageTemplate $pageTemplates[$this->getPageTemplate($page)];
  70.         $template $env->load($parameters['template']);
  71.         return $template->render(array_merge(['pageTemplate' => $pageTemplate], $twigContext));
  72.     }
  73.     /**
  74.      * @return string
  75.      */
  76.     public function getName()
  77.     {
  78.         return 'pagetemplate_twig_extension';
  79.     }
  80. }