/** * Compiles the current route instance. * * Because so much of the parent class is private, we need to call the parent * class's compile() method and then dissect its return value to build our * new compiled object. If upstream gets refactored so we can subclass more * easily then this may not be necessary. * * @param \Symfony\Component\Routing\Route $route * A Route instance. * * @return \Drupal\Core\Routing\CompiledRoute * A CompiledRoute instance. */ public static function compile(Route $route) { $symfony_compiled = parent::compile($route); // The Drupal-specific compiled information. $stripped_path = static::getPathWithoutDefaults($route); $fit = static::getFit($stripped_path); $pattern_outline = static::getPatternOutline($stripped_path); $num_parts = count(explode('/', trim($pattern_outline, '/'))); return new CompiledRoute($route, $fit, $pattern_outline, $num_parts, $symfony_compiled->getStaticPrefix(), $symfony_compiled->getRegex(), $symfony_compiled->getTokens(), $symfony_compiled->getPathVariables(), $symfony_compiled->getHostRegex(), $symfony_compiled->getHostTokens(), $symfony_compiled->getHostVariables(), $symfony_compiled->getVariables()); }
/** * Compiles the current route instance. * * Because so much of the parent class is private, we need to call the parent * class's compile() method and then dissect its return value to build our * new compiled object. If upstream gets refactored so we can subclass more * easily then this may not be necessary. * * @param \Symfony\Component\Routing\Route $route * A Route instance. * * @return \Drupal\Core\Routing\CompiledRoute * A CompiledRoute instance. */ public static function compile(Route $route) { $symfony_compiled = parent::compile($route); // The Drupal-specific compiled information. $stripped_path = static::getPathWithoutDefaults($route); $fit = static::getFit($stripped_path); $pattern_outline = static::getPatternOutline($stripped_path); // We count the number of parts including any optional trailing parts. This // allows the RouteProvider to filter candidate routes more efficiently. $num_parts = count(explode('/', trim($route->getPath(), '/'))); return new CompiledRoute($fit, $pattern_outline, $num_parts, $symfony_compiled->getStaticPrefix(), $symfony_compiled->getRegex(), $symfony_compiled->getTokens(), $symfony_compiled->getPathVariables(), $symfony_compiled->getHostRegex(), $symfony_compiled->getHostTokens(), $symfony_compiled->getHostVariables(), $symfony_compiled->getVariables()); }
public function getRoute($name) { $route = $this->router->match($name); $compiler = new RouteCompiler(); return $compiler->compile($route); }