protected function ThemeRegistryLoader::findTemplate in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Template/Loader/ThemeRegistryLoader.php \Drupal\Core\Template\Loader\ThemeRegistryLoader::findTemplate()
Finds the path to the requested template.
Parameters
string $name: The name of the template to load.
bool $throw: Whether to throw an exception when an error occurs.
Return value
string|false The path to the template, or false if the template is not found.
Throws
\Twig_Error_Loader Thrown if a template matching $name cannot be found.
File
- core/
lib/ Drupal/ Core/ Template/ Loader/ ThemeRegistryLoader.php, line 45
Class
- ThemeRegistryLoader
- Loads templates based on information from the Drupal theme registry.
Namespace
Drupal\Core\Template\LoaderCode
protected function findTemplate($name, $throw = TRUE) {
// Allow for loading based on the Drupal theme registry.
$hook = str_replace('.html.twig', '', strtr($name, '-', '_'));
$theme_registry = $this->themeRegistry
->getRuntime();
if ($theme_registry
->has($hook)) {
$info = $theme_registry
->get($hook);
if (isset($info['path'])) {
$path = $info['path'] . '/' . $name;
}
elseif (isset($info['template'])) {
$path = $info['template'] . '.html.twig';
}
if (isset($path) && is_file($path)) {
return $this->cache[$name] = $path;
}
}
if ($throw) {
throw new \Twig_Error_Loader(sprintf('Unable to find template "%s" in the Drupal theme registry.', $name));
}
return FALSE;
}