diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php index bd2985b313..e4355084fe 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php @@ -141,6 +141,8 @@ class ChoiceType extends AbstractType $knownValues[$child->getName()] = $value; unset($unknownValues[$value]); continue; + } else { + $knownValues[$child->getName()] = null; } } } else { diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php index 691081aeb9..c96ec62eed 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php @@ -1287,6 +1287,20 @@ class ChoiceTypeTest extends BaseTypeTest $this->assertNull($form[4]->getViewData()); } + public function testSubmitSingleExpandedClearMissingFalse() + { + $form = $this->factory->create(self::TESTED_TYPE, 'foo', [ + 'choices' => [ + 'foo label' => 'foo', + 'bar label' => 'bar', + ], + 'expanded' => true, + ]); + $form->submit('bar', false); + + $this->assertSame('bar', $form->getData()); + } + public function testSubmitMultipleExpanded() { $form = $this->factory->create(static::TESTED_TYPE, null, [