Преглед на файлове

merged branch stloyd/issue_1986 (PR #2000)

Commits
-------

c29fa9d [Form] Fix for treatment zero as empty data. Closes #1986

Discussion
----------

[Form] Fix for treatment zero as empty data. Closes #1986

For more info please read #1986.
Fabien Potencier преди 13 години
родител
ревизия
0b531932a0
променени са 2 файла, в които са добавени 31 реда и са изтрити 1 реда
  1. 1 1
      src/Symfony/Component/Form/FormBuilder.php
  2. 30 0
      tests/Symfony/Tests/Component/Form/Extension/Core/Type/FieldTypeTest.php

+ 1 - 1
src/Symfony/Component/Form/FormBuilder.php

@@ -655,7 +655,7 @@ class FormBuilder
             $instance->add($child);
         }
 
-        if ($this->getData()) {
+        if (null !== $this->getData()) {
             $instance->setData($this->getData());
         }
 

+ 30 - 0
tests/Symfony/Tests/Component/Form/Extension/Core/Type/FieldTypeTest.php

@@ -203,6 +203,36 @@ class FieldTypeTest extends TypeTestCase
         $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
      */