From 71841c737cbda8aedf450d5b72ed5de4a70132f4 Mon Sep 17 00:00:00 2001 From: Jules Pietri Date: Tue, 15 Mar 2016 06:26:43 +0100 Subject: [PATCH] Revert "[Form] refactor `RadioListMapper::mapDataToForm()`" closes #18173. This reverts commit 8f918e5f84c53826d025cbb1f3a0bfe093acc4e0. --- .../Form/Extension/Core/DataMapper/RadioListMapper.php | 6 ++++-- .../Component/Form/Extension/Core/Type/ChoiceType.php | 8 -------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Core/DataMapper/RadioListMapper.php b/src/Symfony/Component/Form/Extension/Core/DataMapper/RadioListMapper.php index d08a603b5c..19db183a28 100644 --- a/src/Symfony/Component/Form/Extension/Core/DataMapper/RadioListMapper.php +++ b/src/Symfony/Component/Form/Extension/Core/DataMapper/RadioListMapper.php @@ -38,11 +38,13 @@ class RadioListMapper implements DataMapperInterface /** * {@inheritdoc} */ - public function mapDataToForms($data, $radios) + public function mapDataToForms($choice, $radios) { + $valueMap = array_flip($this->choiceList->getValuesForChoices(array($choice))); + foreach ($radios as $radio) { $value = $radio->getConfig()->getOption('value'); - $radio->setData($value === $data ? true : false); + $radio->setData(isset($valueMap[$value]) ? true : false); } } diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php index 26af37b9ac..29798d037a 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php @@ -143,14 +143,6 @@ class ChoiceType extends AbstractType $event->setData(null); } }); - // For radio lists, pre selection of the choice needs to pre set data - // with the string value so it can be matched in - // {@link \Symfony\Component\Form\Extension\Core\DataMapper\RadioListMapper::mapDataToForms()} - $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { - $choiceList = $event->getForm()->getConfig()->getOption('choice_list'); - $value = current($choiceList->getValuesForChoices(array($event->getData()))); - $event->setData((string) $value); - }); } } elseif ($options['multiple']) { //