protected function Registry::completeSuggestion in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Theme/Registry.php \Drupal\Core\Theme\Registry::completeSuggestion()
Completes the definition of the requested suggestion hook.
Parameters
string $hook: The name of the suggestion hook to complete.
array $cache: The theme registry, as documented in \Drupal\Core\Theme\Registry::processExtension().
1 call to Registry::completeSuggestion()
- Registry::postProcessExtension in core/
lib/ Drupal/ Core/ Theme/ Registry.php - Completes the theme registry adding discovered functions and hooks.
File
- core/
lib/ Drupal/ Core/ Theme/ Registry.php, line 638
Class
- Registry
- Defines the theme registry service.
Namespace
Drupal\Core\ThemeCode
protected function completeSuggestion($hook, array &$cache) {
$previous_hook = $hook;
$incomplete_previous_hook = [];
// Continue looping if the candidate hook doesn't exist or if the candidate
// hook has incomplete preprocess functions, and if the candidate hook is a
// suggestion (has a double underscore).
while ((!isset($cache[$previous_hook]) || isset($cache[$previous_hook]['incomplete preprocess functions'])) && ($pos = strrpos($previous_hook, '__'))) {
// Find the first existing candidate hook that has incomplete preprocess
// functions.
if (isset($cache[$previous_hook]) && !$incomplete_previous_hook && isset($cache[$previous_hook]['incomplete preprocess functions'])) {
$incomplete_previous_hook = $cache[$previous_hook];
unset($incomplete_previous_hook['incomplete preprocess functions']);
}
$previous_hook = substr($previous_hook, 0, $pos);
$this
->mergePreprocessFunctions($hook, $previous_hook, $incomplete_previous_hook, $cache);
}
// In addition to processing suggestions, include base hooks.
if (isset($cache[$hook]['base hook'])) {
// In order to retain the additions from above, pass in the current hook
// as the parent hook, otherwise it will be overwritten.
$this
->mergePreprocessFunctions($hook, $cache[$hook]['base hook'], $cache[$hook], $cache);
}
}