diff --git a/core/lib/Drupal/Core/Routing/RouteSubscriberBase.php b/core/lib/Drupal/Core/Routing/RouteSubscriberBase.php index 8860b11..6edb825 100644 --- a/core/lib/Drupal/Core/Routing/RouteSubscriberBase.php +++ b/core/lib/Drupal/Core/Routing/RouteSubscriberBase.php @@ -25,13 +25,26 @@ * @param \Symfony\Component\Routing\RouteCollection $collection * The route collection for adding routes. */ - abstract public function routes(RouteCollection $collection); + public function routes(RouteCollection $collection) { + } + + /** + * Alters existing routes for a specific collection. + * + * @param \Symfony\Component\Routing\RouteCollection $collection + * The route collection for adding routes. + * @param string $module + * The module these routes belong to. + */ + public function alterRoutes(RouteCollection $collection, $module) { + } /** * {@inheritdoc} */ public static function getSubscribedEvents() { $events[RoutingEvents::DYNAMIC] = 'getRoutes'; + $events[RoutingEvents::ALTER] = 'alterAllRoutes'; return $events; } @@ -46,4 +59,15 @@ public function getRoutes(RouteBuildEvent $event) { $this->routes($collection); } + /** + * Delegates the route altering to self::alterRoutes(). + * + * @param \Drupal\Core\Routing\RouteBuildEvent $event + * The route build event. + */ + public function alterAllRoutes(RouteBuildEvent $event) { + $collection = $event->getRouteCollection(); + $this->alterRoutes($collection, $event->getModule()); + } + }