public function RegisterRouteEnhancersPass::process

Adds services tagged with "route_enhancer" to the router.

Parameters

\Symfony\Component\DependencyInjection\ContainerBuilder $container: The container to process.

Overrides CompilerPassInterface::process

File

drupal/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterRouteEnhancersPass.php, line 25
Contains Drupal\Core\DependencyInjection\Compiler\RegisterRouteEnhancersPass.

Class

RegisterRouteEnhancersPass
Registers route enhancer services with the router.

Namespace

Drupal\Core\DependencyInjection\Compiler

Code

public function process(ContainerBuilder $container) {
  if (!$container
    ->hasDefinition('router.dynamic')) {
    return;
  }
  $router = $container
    ->getDefinition('router.dynamic');
  foreach ($container
    ->findTaggedServiceIds('route_enhancer') as $id => $attributes) {
    $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0;
    $router
      ->addMethodCall('addRouteEnhancer', array(
      new Reference($id),
      $priority,
    ));
  }
  $legacy_router = $container
    ->getDefinition('legacy_router');
  foreach ($container
    ->findTaggedServiceIds('legacy_route_enhancer') as $id => $attributes) {
    $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0;
    $legacy_router
      ->addMethodCall('addRouteEnhancer', array(
      new Reference($id),
      $priority,
    ));
  }
}