/** * {@inheritdoc} */ public function getRouteCollectionForRequest(Request $request) { $collection = new RouteCollection(); $candidates = $this->candidatesStrategy->getCandidates($request); if (0 === count($candidates)) { return $collection; } $routes = $this->routeManager->findVisibleByRoutePatterns($candidates); foreach ($routes as $route) { $collection->add($route->getName(), $route); } return $collection; }
/** * {@inheritdoc} */ public function findVisibleByRoutePatterns(array $routePatterns) { $result = array(); foreach ($routePatterns as $routePattern) { foreach ($this->routes as $route) { if ($routePattern === $route->getRoutePattern() && $route->isVisible()) { $result[$routePattern] = $route; } } } $diffRoutePatterns = array_diff($routePatterns, array_keys($result)); return array_merge(array_values($result), $this->routeManager->findVisibleByRoutePatterns($diffRoutePatterns)); }