diff --git a/core/lib/Drupal/Core/Controller/HtmlPageController.php b/core/lib/Drupal/Core/Controller/HtmlPageController.php index d87b3ed..f5649dc 100644 --- a/core/lib/Drupal/Core/Controller/HtmlPageController.php +++ b/core/lib/Drupal/Core/Controller/HtmlPageController.php @@ -66,8 +66,18 @@ public function content(Request $request, $_content) { ); } // If no title was returned fall back to one defined in the route. - if (!isset($page_content['#title']) && $request->attributes->has('_title')) { - $page_content['#title'] = $request->attributes->get('_title'); + if (!isset($page_content['#title'])) { + // A dynamic title takes priority. + if ($request->attributes->has('_title_callback')) { + $callback = $request->attributes->get('_title_callback'); + $callable = $this->controllerResolver->getControllerFromDefinition($callback); + $arguments = $this->controllerResolver->getArguments($request, $callable); + $page_content['#title'] = call_user_func_array($callable, $arguments); + } + elseif ($request->attributes->has('_title')) { + // Fall back to a static string from the route. + $page_content['#title'] = $request->attributes->get('_title'); + } } $response = new Response(drupal_render_page($page_content));