class FilesystemLoader in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Template/Loader/FilesystemLoader.php \Drupal\Core\Template\Loader\FilesystemLoader
- 10 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 @my_theme/page.html.twig.
Hierarchy
- class \Drupal\Core\Template\Loader\FilesystemLoader extends \Twig\Loader\FilesystemLoader
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
File
- core/
lib/ Drupal/ Core/ Template/ Loader/ FilesystemLoader.php, line 16
Namespace
Drupal\Core\Template\LoaderView source
class FilesystemLoader extends TwigFilesystemLoader {
/**
* 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
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
FilesystemLoader:: |
public | function | Adds a path where templates are stored. | |
FilesystemLoader:: |
public | function | Constructs a new FilesystemLoader object. |