protected function ComponentsLoader::findTemplate in Components! 3.x
Same name and namespace in other branches
- 8.2 src/Template/Loader/ComponentsLoader.php \Drupal\components\Template\Loader\ComponentsLoader::findTemplate()
Throws
\Twig\Error\LoaderError Thrown if a template matching $name cannot be found.
File
- src/Template/ Loader/ ComponentsLoader.php, line 43 
Class
- ComponentsLoader
- Loads namespaced templates from the filesystem.
Namespace
Drupal\components\Template\LoaderCode
protected function findTemplate($name, $throw = TRUE) {
  // Validate the given template.
  $extension = substr($name, strrpos($name, '.', -1));
  if ($name[0] !== '@' || !str_contains(substr($name, 2), '/') || $extension !== '.twig' && $extension !== '.html' && $extension !== '.svg') {
    if (!$throw) {
      return NULL;
    }
    throw new LoaderError(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name.twig").', $name));
  }
  else {
    // componentsRegistry::getTemplate() returns a string or NULL, exactly
    // what componentsLoader::findTemplate() should return.
    $path = $this->componentsRegistry
      ->getTemplate($name);
    if ($path || !$throw) {
      return $path;
    }
    throw new LoaderError(sprintf('Unable to find template "%s" in the components registry.', $name));
  }
}