class FilesystemLoader

Same name in other branches
  1. 9 core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php \Drupal\Core\Template\Loader\FilesystemLoader
  2. 10 core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php \Drupal\Core\Template\Loader\FilesystemLoader
  3. 11.x core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php \Drupal\Core\Template\Loader\FilesystemLoader

Loads templates from the filesystem.

This loader adds module and theme template paths as namespaces to the Twig filesystem loader so that templates can be referenced by namespace, like @block/block.html.twig or @mytheme/page.html.twig.

Hierarchy

  • class \Drupal\Core\Template\Loader\FilesystemLoader extends \Drupal\Core\Template\Loader\Twig_Loader_Filesystem

Expanded class hierarchy of FilesystemLoader

1 string reference to 'FilesystemLoader'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses FilesystemLoader
twig.loader.filesystem in core/core.services.yml
Drupal\Core\Template\Loader\FilesystemLoader

File

core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php, line 15

Namespace

Drupal\Core\Template\Loader
View source
class FilesystemLoader extends \Twig_Loader_Filesystem {
    
    /**
     * Constructs a new FilesystemLoader object.
     *
     * @param string|array $paths
     *   A path or an array of paths to check for templates.
     * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
     *   The module handler service.
     * @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler
     *   The theme handler service.
     */
    public function __construct($paths, ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler) {
        parent::__construct($paths);
        // Add namespaced paths for modules and themes.
        $namespaces = [];
        foreach ($module_handler->getModuleList() as $name => $extension) {
            $namespaces[$name] = $extension->getPath();
        }
        foreach ($theme_handler->listInfo() as $name => $extension) {
            $namespaces[$name] = $extension->getPath();
        }
        foreach ($namespaces as $name => $path) {
            $this->addPath($path . '/templates', $name);
        }
    }
    
    /**
     * Adds a path where templates are stored.
     *
     * @param string $path
     *   A path where to look for templates.
     * @param string $namespace
     *   (optional) A path name.
     */
    public function addPath($path, $namespace = self::MAIN_NAMESPACE) {
        // Invalidate the cache.
        $this->cache = [];
        $this->paths[$namespace][] = rtrim($path, '/\\');
    }

}

Members

Title Sort descending Modifiers Object type Summary
FilesystemLoader::addPath public function Adds a path where templates are stored.
FilesystemLoader::__construct public function Constructs a new FilesystemLoader object.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.