ParamConverterSubscriber.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace Drupal\Core\EventSubscriber;
  3. use Drupal\Core\ParamConverter\ParamConverterManagerInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Drupal\Core\Routing\RoutingEvents;
  6. use Drupal\Core\Routing\RouteBuildEvent;
  7. /**
  8. * Event subscriber for registering parameter converters with routes.
  9. */
  10. class ParamConverterSubscriber implements EventSubscriberInterface {
  11. /**
  12. * The parameter converter manager.
  13. *
  14. * @var \Drupal\Core\ParamConverter\ParamConverterManagerInterface
  15. */
  16. protected $paramConverterManager;
  17. /**
  18. * Constructs a new ParamConverterSubscriber.
  19. *
  20. * @param \Drupal\Core\ParamConverter\ParamConverterManagerInterface $param_converter_manager
  21. * The parameter converter manager that will be responsible for upcasting
  22. * request attributes.
  23. */
  24. public function __construct(ParamConverterManagerInterface $param_converter_manager) {
  25. $this->paramConverterManager = $param_converter_manager;
  26. }
  27. /**
  28. * Applies parameter converters to route parameters.
  29. *
  30. * @param \Drupal\Core\Routing\RouteBuildEvent $event
  31. * The event to process.
  32. */
  33. public function onRoutingRouteAlterSetParameterConverters(RouteBuildEvent $event) {
  34. $this->paramConverterManager->setRouteParameterConverters($event->getRouteCollection());
  35. }
  36. /**
  37. * {@inheritdoc}
  38. */
  39. public static function getSubscribedEvents() {
  40. // Run after \Drupal\system\EventSubscriber\AdminRouteSubscriber.
  41. $events[RoutingEvents::ALTER][] = ['onRoutingRouteAlterSetParameterConverters', -220];
  42. return $events;
  43. }
  44. }