function RouteCompiler::compile
Same name in this branch
- 11.1.x core/lib/Drupal/Core/Routing/RouteCompiler.php \Drupal\Core\Routing\RouteCompiler::compile()
Throws
\InvalidArgumentException if a path variable is named _fragment
\LogicException if a variable is referenced more than once
\DomainException if a variable name starts with a digit or if it is too long to be successfully used as a PCRE subpattern
Overrides RouteCompilerInterface::compile
2 calls to RouteCompiler::compile()
- RouteCompiler::compile in core/
lib/ Drupal/ Core/ Routing/ RouteCompiler.php - Compiles the current route instance.
- RouteCompiler::compile in core/
lib/ Drupal/ Core/ Routing/ RouteCompiler.php - Compiles the current route instance.
1 method overrides RouteCompiler::compile()
- RouteCompiler::compile in core/
lib/ Drupal/ Core/ Routing/ RouteCompiler.php - Compiles the current route instance.
File
-
vendor/
symfony/ routing/ RouteCompiler.php, line 43
Class
- RouteCompiler
- RouteCompiler compiles Route instances to CompiledRoute instances.
Namespace
Symfony\Component\RoutingCode
public static function compile(Route $route) : CompiledRoute {
$hostVariables = [];
$variables = [];
$hostRegex = null;
$hostTokens = [];
if ('' !== ($host = $route->getHost())) {
$result = self::compilePattern($route, $host, true);
$hostVariables = $result['variables'];
$variables = $hostVariables;
$hostTokens = $result['tokens'];
$hostRegex = $result['regex'];
}
$locale = $route->getDefault('_locale');
if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale) === $route->getRequirement('_locale')) {
$requirements = $route->getRequirements();
unset($requirements['_locale']);
$route->setRequirements($requirements);
$route->setPath(str_replace('{_locale}', $locale, $route->getPath()));
}
$path = $route->getPath();
$result = self::compilePattern($route, $path, false);
$staticPrefix = $result['staticPrefix'];
$pathVariables = $result['variables'];
foreach ($pathVariables as $pathParam) {
if ('_fragment' === $pathParam) {
throw new \InvalidArgumentException(\sprintf('Route pattern "%s" cannot contain "_fragment" as a path parameter.', $route->getPath()));
}
}
$variables = array_merge($variables, $pathVariables);
$tokens = $result['tokens'];
$regex = $result['regex'];
return new CompiledRoute($staticPrefix, $regex, $tokens, $pathVariables, $hostRegex, $hostTokens, $hostVariables, array_unique($variables));
}