[Form] Disabled view data validation if "data_class" is set to null
This commit is contained in:
parent
d1a50a2b61
commit
f495410d25
@ -356,21 +356,11 @@ class Form implements \IteratorAggregate, FormInterface
|
||||
if (!FormUtil::isEmpty($viewData)) {
|
||||
$dataClass = $this->config->getDataClass();
|
||||
|
||||
$actualType = is_object($viewData) ? 'an instance of class '.get_class($viewData) : 'a(n) '.gettype($viewData);
|
||||
|
||||
if (null === $dataClass && is_object($viewData) && !$viewData instanceof \ArrayAccess) {
|
||||
$expectedType = 'scalar, array or an instance of \ArrayAccess';
|
||||
|
||||
throw new LogicException(
|
||||
'The form\'s view data is expected to be of type '.$expectedType.', '.
|
||||
'but is '.$actualType.'. You '.
|
||||
'can avoid this error by setting the "data_class" option to '.
|
||||
'"'.get_class($viewData).'" or by adding a view transformer '.
|
||||
'that transforms '.$actualType.' to '.$expectedType.'.'
|
||||
);
|
||||
}
|
||||
|
||||
if (null !== $dataClass && !$viewData instanceof $dataClass) {
|
||||
$actualType = is_object($viewData)
|
||||
? 'an instance of class '.get_class($viewData)
|
||||
: 'a(n) '.gettype($viewData);
|
||||
|
||||
throw new LogicException(
|
||||
'The form\'s view data is expected to be an instance of class '.
|
||||
$dataClass.', but is '.$actualType.'. You can avoid this error '.
|
||||
|
@ -840,19 +840,19 @@ class SimpleFormTest extends AbstractFormTest
|
||||
$this->assertEquals(new PropertyPath('[name]'), $form->getPropertyPath());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Form\Exception\LogicException
|
||||
*/
|
||||
public function testViewDataMustNotBeObjectIfDataClassIsNull()
|
||||
public function testViewDataMayBeObjectIfDataClassIsNull()
|
||||
{
|
||||
$object = new \stdClass();
|
||||
$config = new FormConfigBuilder('name', null, $this->dispatcher);
|
||||
$config->addViewTransformer(new FixedDataTransformer(array(
|
||||
'' => '',
|
||||
'foo' => new \stdClass(),
|
||||
'foo' => $object,
|
||||
)));
|
||||
$form = new Form($config);
|
||||
|
||||
$form->setData('foo');
|
||||
|
||||
$this->assertSame($object, $form->getViewData());
|
||||
}
|
||||
|
||||
public function testViewDataMayBeArrayAccessIfDataClassIsNull()
|
||||
|
Reference in New Issue
Block a user