[Form] Allowed binding false to a checkbox.
This commit is contained in:
parent
c04101b4fe
commit
e4939849ab
@ -488,11 +488,14 @@ class Form implements \IteratorAggregate, FormInterface
|
||||
$this->setData($this->config->getData());
|
||||
}
|
||||
|
||||
// Treat false as NULL to support binding false to checkboxes.
|
||||
// Don't convert NULL to a string here in order to determine later
|
||||
// whether an empty value has been submitted or whether no value has
|
||||
// been submitted at all. This is important for processing checkboxes
|
||||
// and radio buttons with empty values.
|
||||
if (is_scalar($submittedData)) {
|
||||
if (false === $submittedData) {
|
||||
$submittedData = null;
|
||||
} elseif (is_scalar($submittedData)) {
|
||||
$submittedData = (string) $submittedData;
|
||||
}
|
||||
|
||||
|
@ -105,6 +105,28 @@ class CheckboxTypeTest extends \Symfony\Component\Form\Test\TypeTestCase
|
||||
$this->assertNull($form->getViewData());
|
||||
}
|
||||
|
||||
public function testBindWithEmptyValueAndFalseUnchecked()
|
||||
{
|
||||
$form = $this->factory->create('checkbox', null, array(
|
||||
'value' => '',
|
||||
));
|
||||
$form->bind(false);
|
||||
|
||||
$this->assertFalse($form->getData());
|
||||
$this->assertNull($form->getViewData());
|
||||
}
|
||||
|
||||
public function testBindWithEmptyValueAndTrueChecked()
|
||||
{
|
||||
$form = $this->factory->create('checkbox', null, array(
|
||||
'value' => '',
|
||||
));
|
||||
$form->bind(true);
|
||||
|
||||
$this->assertTrue($form->getData());
|
||||
$this->assertSame('', $form->getViewData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideTransformedData
|
||||
*/
|
||||
|
Reference in New Issue
Block a user