Sylius\Bundle\ShippingBundle\DependencyInjection\Compiler\RegisterCalculatorsPass::process PHP Method

process() public method

public process ( ContainerBuilder $container )
$container Symfony\Component\DependencyInjection\ContainerBuilder
    public function process(ContainerBuilder $container)
    {
        if (!$container->hasDefinition('sylius.registry.shipping_calculator') || !$container->hasDefinition('sylius.form_registry.shipping_calculator')) {
            return;
        }
        $registry = $container->getDefinition('sylius.registry.shipping_calculator');
        $formTypeRegistry = $container->getDefinition('sylius.form_registry.shipping_calculator');
        $calculators = [];
        foreach ($container->findTaggedServiceIds('sylius.shipping_calculator') as $id => $attributes) {
            if (!isset($attributes[0]['calculator'], $attributes[0]['label'])) {
                throw new \InvalidArgumentException('Tagged shipping calculators needs to have `calculator` and `label` attributes.');
            }
            $name = $attributes[0]['calculator'];
            $calculators[$name] = $attributes[0]['label'];
            $registry->addMethodCall('register', [$name, new Reference($id)]);
            if (isset($attributes[0]['form-type'])) {
                $formTypeRegistry->addMethodCall('add', [$name, 'default', $attributes[0]['form-type']]);
            }
        }
        $container->setParameter('sylius.shipping_calculators', $calculators);
    }
RegisterCalculatorsPass