protected function ModuleRouteSubscriber::alterRoutes in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/EventSubscriber/ModuleRouteSubscriber.php \Drupal\Core\EventSubscriber\ModuleRouteSubscriber::alterRoutes()
 
Alters existing routes for a specific collection.
Parameters
\Symfony\Component\Routing\RouteCollection $collection: The route collection for adding routes.
Overrides RouteSubscriberBase::alterRoutes
File
- core/
lib/ Drupal/ Core/ EventSubscriber/ ModuleRouteSubscriber.php, line 34  
Class
- ModuleRouteSubscriber
 - A route subscriber to remove routes that depend on modules being enabled.
 
Namespace
Drupal\Core\EventSubscriberCode
protected function alterRoutes(RouteCollection $collection) {
  foreach ($collection as $name => $route) {
    if ($route
      ->hasRequirement('_module_dependencies')) {
      $modules = $route
        ->getRequirement('_module_dependencies');
      $explode_and = $this
        ->explodeString($modules, '+');
      if (count($explode_and) > 1) {
        foreach ($explode_and as $module) {
          // If any moduleExists() call returns FALSE, remove the route and
          // move on to the next.
          if (!$this->moduleHandler
            ->moduleExists($module)) {
            $collection
              ->remove($name);
            continue 2;
          }
        }
      }
      else {
        // OR condition, exploding on ',' character.
        foreach ($this
          ->explodeString($modules, ',') as $module) {
          if ($this->moduleHandler
            ->moduleExists($module)) {
            continue 2;
          }
        }
        // If no modules are found, and we get this far, remove the route.
        $collection
          ->remove($name);
      }
    }
  }
}