From c29fa9d64e91582d7f84331b6b9f2200797cf5ba Mon Sep 17 00:00:00 2001 From: stloyd Date: Mon, 22 Aug 2011 15:19:31 +0200 Subject: [PATCH] [Form] Fix for treatment zero as empty data. Closes #1986 --- src/Symfony/Component/Form/FormBuilder.php | 2 +- .../Extension/Core/Type/FieldTypeTest.php | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Form/FormBuilder.php b/src/Symfony/Component/Form/FormBuilder.php index d600ac754b93..eacd563de666 100644 --- a/src/Symfony/Component/Form/FormBuilder.php +++ b/src/Symfony/Component/Form/FormBuilder.php @@ -655,7 +655,7 @@ public function getForm() $instance->add($child); } - if ($this->getData()) { + if (null !== $this->getData()) { $instance->setData($this->getData()); } diff --git a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FieldTypeTest.php b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FieldTypeTest.php index 215aa70d61d0..d1d7844a61b7 100644 --- a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FieldTypeTest.php +++ b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FieldTypeTest.php @@ -203,6 +203,36 @@ public function testGetAttributesIsEmpty() $this->assertEquals(0, count($form->getAttribute('attr'))); } + /** + * @see https://github.com/symfony/symfony/issues/1986 + */ + public function testSetDataThroughParamsWithZero() + { + $form = $this->factory->create('field', null, array('data' => 0)); + $view = $form->createView(); + + $this->assertFalse($form->isEmpty()); + + $this->assertSame('0', $view->get('value')); + $this->assertSame('0', $form->getData()); + + $form = $this->factory->create('field', null, array('data' => '0')); + $view = $form->createView(); + + $this->assertFalse($form->isEmpty()); + + $this->assertSame('0', $view->get('value')); + $this->assertSame('0', $form->getData()); + + $form = $this->factory->create('field', null, array('data' => '00000')); + $view = $form->createView(); + + $this->assertFalse($form->isEmpty()); + + $this->assertSame('00000', $view->get('value')); + $this->assertSame('00000', $form->getData()); + } + /** * @expectedException Symfony\Component\Form\Exception\FormException */