diff --git a/src/Symfony/Component/Form/Extension/Core/EventListener/FixCheckboxInputListener.php b/src/Symfony/Component/Form/Extension/Core/EventListener/FixCheckboxInputListener.php index 6a16fc106f..f7302e33dc 100644 --- a/src/Symfony/Component/Form/Extension/Core/EventListener/FixCheckboxInputListener.php +++ b/src/Symfony/Component/Form/Extension/Core/EventListener/FixCheckboxInputListener.php @@ -41,7 +41,7 @@ class FixCheckboxInputListener implements EventSubscriberInterface $values = (array) $event->getData(); $indices = $this->choiceList->getIndicesForValues($values); - $event->setData(array_combine($indices, $values)); + $event->setData(count($indices) > 0 ? array_combine($indices, $values) : array()); } static public function getSubscribedEvents() 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 f02e559803..50d1453dd1 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php @@ -399,6 +399,29 @@ class ChoiceTypeTest extends TypeTestCase $this->assertNull($form[4]->getClientData()); } + public function testBindMultipleExpandedEmpty() + { + $form = $this->factory->create('choice', null, array( + 'multiple' => true, + 'expanded' => true, + 'choices' => $this->choices, + )); + + $form->bind(array()); + + $this->assertSame(array(), $form->getData()); + $this->assertFalse($form[0]->getData()); + $this->assertFalse($form[1]->getData()); + $this->assertFalse($form[2]->getData()); + $this->assertFalse($form[3]->getData()); + $this->assertFalse($form[4]->getData()); + $this->assertNull($form[0]->getClientData()); + $this->assertNull($form[1]->getClientData()); + $this->assertNull($form[2]->getClientData()); + $this->assertNull($form[3]->getClientData()); + $this->assertNull($form[4]->getClientData()); + } + public function testBindMultipleExpandedWithEmptyField() { $form = $this->factory->create('choice', null, array(