* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\DependencyInjection; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; /** * @author Johannes M. Schmitt * @author Robin Chalas */ class AddConstraintValidatorsPass implements CompilerPassInterface { public function process(ContainerBuilder $container) { if (!$container->hasDefinition('validator.validator_factory')) { return; } $validators = []; foreach ($container->findTaggedServiceIds('validator.constraint_validator', true) as $id => $attributes) { $definition = $container->getDefinition($id); if (isset($attributes[0]['alias'])) { $validators[$attributes[0]['alias']] = new Reference($id); } $validators[$definition->getClass()] = new Reference($id); } $container ->getDefinition('validator.validator_factory') ->replaceArgument(0, ServiceLocatorTagPass::register($container, $validators)) ; } }