Skip to content

Instantly share code, notes, and snippets.

@johnnypeck
Created January 20, 2013 05:12
Show Gist options
  • Save johnnypeck/4576776 to your computer and use it in GitHub Desktop.
Save johnnypeck/4576776 to your computer and use it in GitHub Desktop.
Add form types from service definitions.
public function process(ContainerBuilder $container)
{
if (!$container->hasDefinition('form.extension')) {
return;
}
$types = $container->getDefinition('form.extension')->getArgument(1);
foreach ($container->findTaggedServiceIds('jspeck_choices.form') as $id => $attributes) {
$def = $container->findDefinition($id);
$definition = new Definition('Jspeck\Bundle\ChoicesBundle\Form\Extension\Type\ChoicesFormType');
$definition->addMethodCall('setName', array($attributes[0]['alias']));
$definition->addMethodCall('setClass', array($def->getClass()));
$definition->addTag('form.type', array('alias' => $attributes[0]['alias']));
$defName = 'jspeck_choices.form.type.' . $attributes[0]['alias'];
$container->setDefinition($defName, $definition);
$types[($attributes[0]['alias'])] = $defName;
}
$container->getDefinition('form.extension')->replaceArgument(1, $types);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment