Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 22 |
EntityRouteProviderSubscriber | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
90 | |
0.00% |
0 / 22 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
onDynamicRouteEvent | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 17 |
|||
getSubscribedEvents | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber. | |
*/ | |
namespace Drupal\Core\EventSubscriber; | |
use Drupal\Core\Entity\EntityManagerInterface; | |
use Drupal\Core\Routing\RouteBuildEvent; | |
use Drupal\Core\Routing\RoutingEvents; | |
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
use Symfony\Component\Routing\RouteCollection; | |
/** | |
* Ensures that routes can be provided by entity types. | |
*/ | |
class EntityRouteProviderSubscriber implements EventSubscriberInterface { | |
/** | |
* The entity manager. | |
* | |
* @var \Drupal\Core\Entity\EntityManagerInterface | |
*/ | |
protected $entityManager; | |
/** | |
* Constructs a new EntityRouteProviderSubscriber instance. | |
* | |
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
* The entity manager. | |
*/ | |
public function __construct(EntityManagerInterface $entity_manager) { | |
$this->entityManager = $entity_manager; | |
} | |
/** | |
* Provides routes on route rebuild time. | |
* | |
* @param \Drupal\Core\Routing\RouteBuildEvent $event | |
* The route build event. | |
*/ | |
public function onDynamicRouteEvent(RouteBuildEvent $event) { | |
$route_collection = $event->getRouteCollection(); | |
foreach ($this->entityManager->getDefinitions() as $entity_type) { | |
if ($entity_type->hasRouteProviders()) { | |
foreach ($this->entityManager->getRouteProviders($entity_type->id()) as $route_provider) { | |
// Allow to both return an array of routes or a route collection, | |
// like route_callbacks in the routing.yml file. | |
$routes = $route_provider->getRoutes($entity_type); | |
if ($routes instanceof RouteCollection) { | |
$routes = $routes->all(); | |
} | |
foreach ($routes as $route_name => $route) { | |
// Don't override existing routes. | |
if (!$route_collection->get($route_name)) { | |
$route_collection->add($route_name, $route); | |
} | |
} | |
} | |
} | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function getSubscribedEvents() { | |
$events[RoutingEvents::DYNAMIC][] = ['onDynamicRouteEvent']; | |
return $events; | |
} | |
} | |