public static function RouteCompiler::getPathWithoutDefaults

public static RouteCompiler::getPathWithoutDefaults(Route $route)

Returns the path of the route, without placeholders with a default value.

When computing the path outline and fit, we want to skip default-value placeholders. If we didn't, the path would never match. Note that this only works for placeholders at the end of the path. Infix placeholders with default values don't make sense anyway, so that should not be a problem.

Parameters

\Symfony\Component\Routing\Route $route: The route to have the placeholders removed from.

Return value

string The path string, stripped of placeholders that have default values.

File

core/lib/Drupal/Core/Routing/RouteCompiler.php, line 121

Class

RouteCompiler
Compiler to generate derived information from a Route necessary for matching.

Namespace

Drupal\Core\Routing

Code

public static function getPathWithoutDefaults(Route $route) {
  $path = $route->getPath();
  $defaults = $route->getDefaults();

  // Remove placeholders with default values from the outline, so that they
  // will still match.
  $remove = array_map(function($a) {
    return '/{' . $a . '}';
  }, array_keys($defaults));
  $path = str_replace($remove, '', $path);

  return $path;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Routing!RouteCompiler.php/function/RouteCompiler::getPathWithoutDefaults/8.1.x