/** * Collect asset resources defined in twig templates * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if (count($this->templates) === 0) { // Automatically find templates only if loader compatible if ($this->loader instanceof \Twig_Loader_Filesystem) { $twigNamespaces = $this->loader->getNamespaces(); foreach ($twigNamespaces as $ns) { if (count($this->loader->getPaths($ns)) > 0) { $iterator = Finder::create()->files()->in($this->loader->getPaths($ns)); /* @var $file \Symfony\Component\Finder\SplFileInfo */ foreach ($iterator as $file) { $resource = new TwigResource($this->loader, '@' . $ns . '/' . $file->getRelativePathname()); $this->manager->addResource($resource, 'twig'); } } } } } else { foreach ($this->templates as $template) { $resource = new TwigResource($this->loader, $template); $this->manager->addResource($resource, 'twig'); } } }
public function __construct(Twig_LoaderInterface $loader) { $this->loader = $loader; $templates = array(); if ($loader instanceof Twig_Loader_Filesystem) { foreach ($loader->getNamespaces() as $namespace) { $paths = $loader->getPaths($namespace); foreach ($paths as $path) { foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(realpath($path)), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { if (Twig_Loader_Filesystem::MAIN_NAMESPACE === $namespace) { $templates[] = substr($file->getPathname(), strlen($path) + 1); } else { $templates[] = '@' . $namespace . '/' . $file->getPathname(); } } } } } print_r($templates); }