public function process(ContainerBuilder $container)
{
$tag = 'datagrid';
$interface = DataGridInterface::class;
foreach ($container->findTaggedServiceIds($tag) as $id => $attributes) {
$definition = $container->getDefinition($id);
$refClass = new \ReflectionClass($definition->getClass());
if (!$refClass->implementsInterface($interface)) {
throw new \InvalidArgumentException(sprintf('DataGrid "%s" tagged with "%s" must implement interface "%s".', $id, $tag, $interface));
}
$definition->addArgument($attributes[0]['alias']);
$definition->addArgument(new Reference('event_dispatcher'));
$definition->addMethodCall('setContainer', [new Reference('service_container')]);
}
}