/** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { parent::configureOptions($resolver); $resolver->setDefaults(array('entry_type' => function (Options $options, $value) { return $options['select2']['enabled'] ? ChoiceType::class : $value; }, 'allow_add' => function (Options $options, $value) { return $options['select2']['enabled'] ? true : $value; }, 'allow_delete' => function (Options $options, $value) { return $options['select2']['enabled'] ? true : $value; }, 'prototype' => function (Options $options, $value) { return $options['select2']['enabled'] ? false : $value; })); $resolver->setNormalizer('prototype', function (Options $options, $value) { return $options['select2']['enabled'] ? false : $value; }); $resolver->setNormalizer('entry_options', function (Options $options, $value) { if ($options['select2']['enabled']) { $value = array_merge($value, array('select2' => array_merge($options['select2'], array('tags' => $options['allow_add'])))); } return $value; }); }