[Form] fixed radio and checkbox when data is not bool
This commit is contained in:
parent
b55a43813e
commit
79ae3fced9
@ -37,7 +37,7 @@ class CheckboxType extends AbstractType
|
||||
{
|
||||
$view
|
||||
->set('value', $form->getAttribute('value'))
|
||||
->set('checked', (Boolean) $form->getData())
|
||||
->set('checked', (Boolean) $form->getClientData())
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -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()) {
|
||||
|
@ -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),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user