protected function getForm($name = 'name', $propertyPath = null, $dataClass = null, $errorMapping = array(), $virtual = false, $synchronized = true) { $config = new FormConfig($name, $dataClass, $this->dispatcher, array('error_mapping' => $errorMapping)); $config->setMapped(true); $config->setVirtual($virtual); $config->setPropertyPath($propertyPath); if (!$synchronized) { $config->addViewTransformer(new CallbackTransformer(function ($normData) { return $normData; }, function () { throw new TransformationFailedException(); })); } return new Form($config); }
public function testMapFormsToDataSkipsVirtualForms() { $car = new \stdClass(); $engine = new \stdClass(); $parentPath = $this->getPropertyPath('name'); $childPath = $this->getPropertyPath('engine'); $parentPath->expects($this->never())->method('getValue'); $parentPath->expects($this->never())->method('setValue'); $childPath->expects($this->once())->method('setValue')->with($car, $engine); $config = new FormConfig('name', '\\stdClass', $this->dispatcher); $config->setPropertyPath($parentPath); $config->setVirtual(true); $config->setCompound(true); $config->setDataMapper($this->getDataMapper()); $form = $this->getForm($config); $config = new FormConfig('engine', '\\stdClass', $this->dispatcher); $config->setByReference(true); $config->setPropertyPath($childPath); $config->setData($engine); $child = $this->getForm($config); $form->add($child); $this->mapper->mapFormsToData(array($form), $car); }