By longwave on
Change record status:
Draft (View all draft change records)
Project:
Introduced in branch:
11.5.x
Introduced in version:
11.5.0
Issue links:
Description:
\Drupal\Core\Routing\RouteSubscriberBase now subscribes to RoutingEvents::STATIC in addition to RoutingEvents::ALTER. Subclasses implement buildRoutes() to return new routes. This replaces route_callbacks entries in *.routing.yml files.
alterRoutes() is no longer abstract. Subclasses that only define routes can omit it. Existing subscribers continue to work unchanged.
Before
# my_module.routing.yml
route_callbacks:
- 'my_module.route_subscriber:routes'
class RouteSubscriber extends RouteSubscriberBase {
public function routes() {
$collection = new RouteCollection();
// Add routes.
return $collection;
}
protected function alterRoutes(RouteCollection $collection) {
// Alter routes.
}
}
After
class RouteSubscriber extends RouteSubscriberBase {
protected function buildRoutes(): RouteCollection {
$collection = new RouteCollection();
// Add routes.
return $collection;
}
protected function alterRoutes(RouteCollection $collection) {
// Alter routes (omit this method entirely if no altering is required).
}
}
A subclass that overrides getSubscribedEvents() must keep the RoutingEvents::STATIC entry, or call parent::getSubscribedEvents().
Impacts:
Module developers