
| Current Path : /var/www/html/ift/web/core/lib/Drupal/Core/EventSubscriber/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/ift/web/core/lib/Drupal/Core/EventSubscriber/EntityRouteAlterSubscriber.php |
<?php
namespace Drupal\Core\EventSubscriber;
use Drupal\Core\Entity\EntityResolverManager;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Drupal\Core\Routing\RoutingEvents;
use Drupal\Core\Routing\RouteBuildEvent;
/**
* Registers the 'type' of route parameter names that match an entity type.
*
* @todo Matching on parameter *name* is not ideal, because it breaks
* encapsulation: parameter names are local to the controller and route, and
* controllers and routes can't be expected to know what all possible entity
* types might exist across all modules in order to pick names that don't
* conflict. Instead, the 'type' should be determined from introspecting what
* kind of PHP variable (e.g., a type hinted interface) the controller
* requires: https://www.drupal.org/node/2041907.
*/
class EntityRouteAlterSubscriber implements EventSubscriberInterface {
/**
* The entity resolver manager.
*
* @var \Drupal\Core\Entity\EntityResolverManager
*/
protected $resolverManager;
/**
* Constructs an EntityRouteAlterSubscriber instance.
*
* @param \Drupal\Core\Entity\EntityResolverManager $entity_resolver_manager
* The entity resolver manager.
*/
public function __construct(EntityResolverManager $entity_resolver_manager) {
$this->resolverManager = $entity_resolver_manager;
}
/**
* Applies parameter converters to route parameters.
*
* @param \Drupal\Core\Routing\RouteBuildEvent $event
* The event to process.
*/
public function onRoutingRouteAlterSetType(RouteBuildEvent $event) {
foreach ($event->getRouteCollection() as $route) {
$this->resolverManager->setRouteOptions($route);
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events[RoutingEvents::ALTER][] = ['onRoutingRouteAlterSetType', -150];
return $events;
}
}