Skip to content

Commit 369dc52

Browse files
ISSUE-53: Updated BooleanType for Symfony 2.7
1 parent 4c232f8 commit 369dc52

File tree

2 files changed

+22
-30
lines changed

2 files changed

+22
-30
lines changed

src/BooleanType.php

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
use Symfony\Component\Form\AbstractType;
2525
use Symfony\Component\Form\FormBuilderInterface;
2626
use Symfony\Component\OptionsResolver\Options;
27-
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
27+
use Symfony\Component\OptionsResolver\OptionsResolver;
2828

2929
/**
3030
* Boolean form field type.
@@ -47,20 +47,14 @@ public function buildForm(FormBuilderInterface $builder, array $options)
4747
}
4848

4949
/**
50-
* Sets the default options for this type.
50+
* Configures the options for this type.
5151
*
52-
* @param \Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver
52+
* @param \Symfony\Component\OptionsResolver\OptionsResolver $resolver
5353
*/
54-
public function setDefaultOptions(OptionsResolverInterface $resolver)
54+
public function configureOptions(OptionsResolver $resolver)
5555
{
5656
$self = $this;
5757

58-
$valueNormalizer = function (Options $options, $value) {
59-
// PHP converts string array keys containing integers to integers array keys.
60-
// Make sure that our values are of the same type in order to be able to compare the values.
61-
return is_numeric($value) && $value / 1 === (int) $value ? (int) $value : $value;
62-
};
63-
6458
$labelTrueNormalizer = function (Options $options, $value) use ($self) {
6559
return !is_null($value) ? (string) $value : $self->humanize($options['value_true']);
6660
};
@@ -71,11 +65,15 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
7165

7266
$choicesNormalizer = function (Options $options) {
7367
return array(
74-
$options['value_true'] => $options['label_true'],
75-
$options['value_false'] => $options['label_false'],
68+
$options['label_true'] => $options['value_true'],
69+
$options['label_false'] => $options['value_false'],
7670
);
7771
};
7872

73+
$choicesAsValuesNormalizer = function () {
74+
return true;
75+
};
76+
7977
$expandedNormalizer = function (Options $options) {
8078
return 'choice' !== $options['widget'];
8179
};
@@ -92,26 +90,19 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
9290
'widget' => 'choice',
9391
));
9492

95-
$resolver->setNormalizers(array(
96-
'value_true' => $valueNormalizer,
97-
'value_false' => $valueNormalizer,
98-
'label_true' => $labelTrueNormalizer,
99-
'label_false' => $labelFalseNormalizer,
100-
'choices' => $choicesNormalizer,
101-
'expanded' => $expandedNormalizer,
102-
'multiple' => $multipleNormalizer,
103-
));
93+
$resolver->setNormalizer('label_true', $labelTrueNormalizer);
94+
$resolver->setNormalizer('label_false', $labelFalseNormalizer);
95+
$resolver->setNormalizer('choices', $choicesNormalizer);
96+
$resolver->setNormalizer('choices_as_values', $choicesAsValuesNormalizer);
97+
$resolver->setNormalizer('expanded', $expandedNormalizer);
98+
$resolver->setNormalizer('multiple', $multipleNormalizer);
10499

105-
$resolver->setAllowedTypes(array(
106-
'value_true' => array('string', 'integer'),
107-
'value_false' => array('string', 'integer'),
108-
'label_true' => array('string', 'null'),
109-
'label_false' => array('string', 'null'),
110-
));
100+
$resolver->setAllowedTypes('value_true', array('string', 'integer', 'float'));
101+
$resolver->setAllowedTypes('value_false', array('string', 'integer', 'float'));
102+
$resolver->setAllowedTypes('label_true', array('string', 'null'));
103+
$resolver->setAllowedTypes('label_false', array('string', 'null'));
111104

112-
$resolver->setAllowedValues(array(
113-
'widget' => array('choice', 'radio'),
114-
));
105+
$resolver->setAllowedValues('widget', array('choice', 'radio'));
115106
}
116107

117108
/**

tests/BooleanTypeTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ public function providerValueTrueFalse()
126126
'on/off' => array('on', 'off'),
127127
'1/0' => array('1', '0'),
128128
'1/2' => array(1, 2),
129+
'1.3/2.7' => array(1.3, 2.7),
129130
);
130131
}
131132

0 commit comments

Comments
 (0)