Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. AddAutoMappingConfigurationPass.php

function AddAutoMappingConfigurationPass::process

Overrides CompilerPassInterface::process

File

vendor/symfony/validator/DependencyInjection/AddAutoMappingConfigurationPass.php, line 25

Class

AddAutoMappingConfigurationPass
Injects the automapping configuration as last argument of loaders tagged with the "validator.auto_mapper" tag.

Namespace

Symfony\Component\Validator\DependencyInjection

Code

public function process(ContainerBuilder $container) : void {
    if (!$container->hasParameter('validator.auto_mapping') || !$container->hasDefinition('validator.builder')) {
        return;
    }
    $config = $container->getParameter('validator.auto_mapping');
    $globalNamespaces = [];
    $servicesToNamespaces = [];
    foreach ($config as $namespace => $value) {
        if ([] === $value['services']) {
            $globalNamespaces[] = $namespace;
            continue;
        }
        foreach ($value['services'] as $service) {
            $servicesToNamespaces[$service][] = $namespace;
        }
    }
    $validatorBuilder = $container->getDefinition('validator.builder');
    foreach ($container->findTaggedServiceIds('validator.auto_mapper') as $id => $tags) {
        $regexp = $this->getRegexp(array_merge($globalNamespaces, $servicesToNamespaces[$id] ?? []));
        $validatorBuilder->addMethodCall('addLoader', [
            new Reference($id),
        ]);
        $container->getDefinition($id)
            ->setArgument('$classValidatorRegexp', $regexp);
    }
    $container->getParameterBag()
        ->remove('validator.auto_mapping');
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal