Commit 47295c18 authored by catch's avatar catch

Issue #2493989 by Antti J. Salminen, lauriii, slashrsm: template_preprocess()...

Issue #2493989 by Antti J. Salminen, lauriii, slashrsm: template_preprocess() and other preprocess functions are called even for theme hooks implemented as functions
parent 44892524
......@@ -472,12 +472,14 @@ protected function processExtension(array &$cache, $name, $type, $theme, $path)
// A template file is the default implementation for a theme hook, but
// if the theme hook specifies a function callback instead, check to
// ensure the function actually exists.
if (isset($info['function']) && !function_exists($info['function'])) {
throw new \BadFunctionCallException(sprintf(
'Theme hook "%s" refers to a theme function callback that does not exist: "%s"',
$hook,
$info['function']
));
if (isset($info['function'])) {
if (!function_exists($info['function'])) {
throw new \BadFunctionCallException(sprintf(
'Theme hook "%s" refers to a theme function callback that does not exist: "%s"',
$hook,
$info['function']
));
}
}
// Provide a default naming convention for 'template' based on the
// hook used. If the template does not exist, the theme engine used
......
......@@ -100,6 +100,11 @@ public function testMultipleSubThemes() {
'test_basetheme_preprocess_theme_test_template_test',
], $preprocess_functions);
$preprocess_functions = $registry_base_theme->get()['theme_test_function_suggestions']['preprocess functions'];
$this->assertIdentical([
'template_preprocess_theme_test_function_suggestions',
'test_basetheme_preprocess_theme_test_function_suggestions',
], $preprocess_functions, "Theme functions don't have template_preprocess but do have template_preprocess_HOOK");
}
/**
......
......@@ -81,6 +81,12 @@ function theme_test_page_bottom(array &$page_bottom) {
$page_bottom['theme_test_page_bottom'] = array('#markup' => 'theme test page bottom markup');
}
/**
* Implements template_preprocess_HOOK() for theme_test_function_suggestions theme functions.
*/
function template_preprocess_theme_test_function_suggestions(&$variables) {
}
/**
* Theme function for testing _theme('theme_test_foo').
*/
......
......@@ -28,3 +28,9 @@ function test_basetheme_views_post_render(ViewExecutable $view, &$output, CacheP
*/
function test_basetheme_preprocess_theme_test_template_test(&$variables) {
}
/**
* Implements hook_preprocess_HOOK() for theme_test_function_suggestions theme functions.
*/
function test_basetheme_preprocess_theme_test_function_suggestions(&$variables) {
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment