Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Controller/TitleResolver.php \Drupal\Core\Controller\TitleResolver::getTitle()
  2. 9 core/lib/Drupal/Core/Controller/TitleResolver.php \Drupal\Core\Controller\TitleResolver::getTitle()

File

core/lib/Drupal/Core/Controller/TitleResolver.php, line 50

Class

TitleResolver
Provides the default implementation of the title resolver interface.

Namespace

Drupal\Core\Controller

Code

public function getTitle(Request $request, Route $route) {
  $route_title = NULL;

  // A dynamic title takes priority. Route::getDefault() returns NULL if the
  // named default is not set.  By testing the value directly, we also avoid
  // trying to use empty values.
  if ($callback = $route
    ->getDefault('_title_callback')) {
    $callable = $this->controllerResolver
      ->getControllerFromDefinition($callback);
    $arguments = $this->argumentResolver
      ->getArguments($request, $callable);
    $route_title = call_user_func_array($callable, $arguments);
  }
  elseif ($route
    ->hasDefault('_title') && strlen($route
    ->getDefault('_title')) > 0) {
    $title = $route
      ->getDefault('_title');
    $options = [];
    if ($route
      ->hasDefault('_title_context')) {
      $options['context'] = $route
        ->getDefault('_title_context');
    }
    $args = [];
    if ($raw_parameters = $request->attributes
      ->get('_raw_variables')) {
      foreach ($raw_parameters
        ->all() as $key => $value) {
        if (is_scalar($value)) {
          $args['@' . $key] = $value;
          $args['%' . $key] = $value;
        }
      }
    }
    if ($title_arguments = $route
      ->getDefault('_title_arguments')) {
      $args = array_merge($args, (array) $title_arguments);
    }

    // Fall back to a static string from the route.
    $route_title = $this
      ->t($title, $args, $options);
  }
  return $route_title;
}