Issue #2170589 by damiankloip: Use addCollection() in routeBuilder if a RouteCollection is returned from a route_callback.
parent
02b19f340a
commit
98e3ece396
|
@ -112,15 +112,23 @@ class RouteBuilder {
|
||||||
// The top-level 'routes_callback' is a list of methods in controller
|
// The top-level 'routes_callback' is a list of methods in controller
|
||||||
// syntax, see \Drupal\Core\Controller\ControllerResolver. These methods
|
// syntax, see \Drupal\Core\Controller\ControllerResolver. These methods
|
||||||
// should return a set of \Symfony\Component\Routing\Route objects, either
|
// should return a set of \Symfony\Component\Routing\Route objects, either
|
||||||
// in an associative array keyed by the route name, or as a new
|
// in an associative array keyed by the route name, which will be iterated
|
||||||
// \Symfony\Component\Routing\RouteCollection, which will be iterated over
|
// over and added to the collection for this provider, or as a new
|
||||||
// and added to the collection for this provider.
|
// \Symfony\Component\Routing\RouteCollection object, which will be added
|
||||||
|
// to the collection.
|
||||||
if (isset($routes['route_callbacks'])) {
|
if (isset($routes['route_callbacks'])) {
|
||||||
foreach ($routes['route_callbacks'] as $route_callback) {
|
foreach ($routes['route_callbacks'] as $route_callback) {
|
||||||
$callback = $this->controllerResolver->getControllerFromDefinition($route_callback);
|
$callback = $this->controllerResolver->getControllerFromDefinition($route_callback);
|
||||||
if ($callback_routes = call_user_func($callback)) {
|
if ($callback_routes = call_user_func($callback)) {
|
||||||
foreach ($callback_routes as $name => $callback_route) {
|
// If a RouteCollection is returned, add the whole collection.
|
||||||
$collection->add($name, $callback_route);
|
if ($callback_routes instanceof RouteCollection) {
|
||||||
|
$collection->addCollection($callback_routes);
|
||||||
|
}
|
||||||
|
// Otherwise, add each Route object individually.
|
||||||
|
else {
|
||||||
|
foreach ($callback_routes as $name => $callback_route) {
|
||||||
|
$collection->add($name, $callback_route);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue