function RouteCompiler::getPathWithoutDefaults
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Routing/RouteCompiler.php \Drupal\Core\Routing\RouteCompiler::getPathWithoutDefaults()
- 10 core/lib/Drupal/Core/Routing/RouteCompiler.php \Drupal\Core\Routing\RouteCompiler::getPathWithoutDefaults()
- 11.x core/lib/Drupal/Core/Routing/RouteCompiler.php \Drupal\Core\Routing\RouteCompiler::getPathWithoutDefaults()
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.
2 calls to RouteCompiler::getPathWithoutDefaults()
- PathPluginBase::overrideAppliesPathAndMethod in core/
modules/ views/ src/ Plugin/ views/ display/ PathPluginBase.php - Determines whether an override for the path and method should happen.
- RouteCompiler::compile in core/
lib/ Drupal/ Core/ Routing/ RouteCompiler.php - Compiles the current route instance.
File
-
core/
lib/ Drupal/ Core/ Routing/ RouteCompiler.php, line 124
Class
- RouteCompiler
- Compiler to generate derived information from a Route necessary for matching.
Namespace
Drupal\Core\RoutingCode
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;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.