[Form] fixed radio and checkbox when data is not bool

This commit is contained in:
Kris Wallsmith 2011-11-16 13:22:07 -08:00
parent b55a43813e
commit 79ae3fced9
3 changed files with 39 additions and 2 deletions

View File

@ -37,7 +37,7 @@ class CheckboxType extends AbstractType
{
$view
->set('value', $form->getAttribute('value'))
->set('checked', (Boolean) $form->getData())
->set('checked', (Boolean) $form->getClientData())
;
}

View File

@ -37,7 +37,7 @@ class RadioType extends AbstractType
{
$view
->set('value', $form->getAttribute('value'))
->set('checked', (Boolean) $form->getData())
->set('checked', (Boolean) $form->getClientData())
;
if ($view->hasParent()) {

View File

@ -11,6 +11,8 @@
namespace Symfony\Tests\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\CallbackTransformer;
class CheckboxTypeTest extends TypeTestCase
{
public function testPassValueToView()
@ -38,4 +40,39 @@ class CheckboxTypeTest extends TypeTestCase
$this->assertFalse($view->get('checked'));
}
/**
* @dataProvider proviceTransformedData
*/
public function testTransformedData($data, $expected)
{
// present a binary status field as a checkbox
$transformer = new CallbackTransformer(
function ($value)
{
return 'expedited' == $value;
},
function ($value)
{
return $value ? 'expedited' : 'standard';
}
);
$form = $this->builder
->create('expedited_shipping', 'checkbox')
->prependClientTransformer($transformer)
->getForm();
$form->setData($data);
$view = $form->createView();
$this->assertEquals($expected, $view->get('checked'));
}
public function proviceTransformedData()
{
return array(
array('expedited', true),
array('standard', false),
);
}
}