From 0db8766d69b90927697c71feee326932ea50b355 Mon Sep 17 00:00:00 2001 From: Gerardo Montivero Date: Thu, 7 Dec 2023 11:40:14 -0300 Subject: [PATCH] :ambulance: Terminado --- config/services.yaml | 1 + src/Twig/BaseExtension.php | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/config/services.yaml b/config/services.yaml index d3c4c97..028066b 100755 --- a/config/services.yaml +++ b/config/services.yaml @@ -37,6 +37,7 @@ services: $site_temporal: '%site_temporal%' $site_podcasts: '%env(resolve:URL_PODCAST)%' $queue_enable: '%queue_enable%' + $publicDir: '%kernel.project_dir%/public' # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name diff --git a/src/Twig/BaseExtension.php b/src/Twig/BaseExtension.php index fea1e25..f27ce54 100755 --- a/src/Twig/BaseExtension.php +++ b/src/Twig/BaseExtension.php @@ -9,6 +9,7 @@ use InvalidArgumentException; use Psr\Container\ContainerInterface; use Symfony\Contracts\Service\ServiceSubscriberInterface; +use Symfony\WebpackEncoreBundle\Asset\EntrypointLookupInterface; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; use Twig\TwigFunction; @@ -17,16 +18,20 @@ class BaseExtension extends AbstractExtension implements ServiceSubscriberInterf { protected $em; private $container; + private string $publicDir; /** * BaseExtension constructor. * @param EntityManagerInterface $em * @param ContainerInterface $container + * @param string $publicDir */ - public function __construct(EntityManagerInterface $em, ContainerInterface $container) + public function __construct( + EntityManagerInterface $em, ContainerInterface $container, string $publicDir) { $this->em = $em; $this->container = $container; + $this->publicDir = $publicDir; } public function getFilters(): array @@ -49,13 +54,14 @@ public function getFunctions(): array new TwigFunction('capacidad_restante', [$this, 'capacidad_restante']), new TwigFunction('capacidad_ocupada', [$this, 'capacidad_ocupada']), new TwigFunction('redirection', [$this, 'redirection']), + new TwigFunction('encore_entry_css_source', [$this, 'getEncoreEntryCssSource']), ]; } public function lema() { $lema = $this->em->getRepository(MetaBase::class)->findOneBy([]); - if(!$lema){ + if (!$lema) { return null; } return $lema->getLema(); @@ -65,7 +71,7 @@ public function metaDescripcion() { $base = $this->em->getRepository(MetaBase::class)->findOneBy([]); - if(!$base){ + if (!$base) { return null; } @@ -103,6 +109,7 @@ public static function getSubscribedServices() return [ UploaderHelper::class, EntityManagerInterface::class, + EntrypointLookupInterface::class ]; } @@ -115,4 +122,17 @@ public function redirection(string $link) echo ""; } + + public function getEncoreEntryCssSource(string $entryName): string + { + $entryPointLookupInterface = $this->container->get(EntrypointLookupInterface::class); + $entryPointLookupInterface->reset(); + $files = $entryPointLookupInterface->getCssFiles($entryName); + $source = ''; + foreach ($files as $file) { + $source .= file_get_contents($this->publicDir . $file); + } + + return $source; + } }