2424use Symfony \Component \Form \AbstractType ;
2525use Symfony \Component \Form \FormBuilderInterface ;
2626use 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 /**
0 commit comments