public function isValid(\Symfony\Component\Form\Form &$form) { $viewData = $form->getViewData(); //pour le champ hidden allFieldsAreThere de Revision if (!is_object($viewData) && 'allFieldsAreThere' == $form->getName()) { return true; } if ($viewData instanceof Revision) { /** @var DataField $dataField */ $dataField = $viewData->getDatafield(); } elseif ($viewData instanceof DataField) { /** @var DataField $dataField */ $dataField = $viewData; } else { throw new \Exception("Unforeseen type of viewData"); } if ($dataField->getFieldType() !== null && $dataField->getFieldType()->getType() !== null) { $dataFieldTypeClassName = $dataField->getFieldType()->getType(); /** @var DataFieldType $dataFieldType */ $dataFieldType = new $dataFieldTypeClassName(); } $isValid = true; if (isset($dataFieldType) && $dataFieldType->isContainer()) { //If datafield is container or type is null => Container => Recursive $formChildren = $form->all(); foreach ($formChildren as $child) { if ($child instanceof \Symfony\Component\Form\Form) { $tempIsValid = $this->isValid($child); //Recursive $isValid = $isValid && $tempIsValid; } } if (!$isValid) { $form->addError(new FormError("At least one child is not valid!")); } } // $isValid = $isValid && $dataFieldType->isValid($dataField); if (isset($dataFieldType) && !$dataFieldType->isValid($dataField)) { $isValid = false; $form->addError(new FormError("This Field is not valid! " . $dataField->getMessages()[0])); } return $isValid; }
public function testRequestWithValidJsonShouldPopulateForm() { $request = $this->getRequest('{ "name": "test1" }'); $this->form->handleRequest($request); $this->assertEquals(['name' => 'test1', 'lastname' => null], $this->form->getData()); $this->assertEquals(['name' => 'test1', 'lastname' => null], $this->form->getNormData()); $this->assertEquals(['name' => 'test1', 'lastname' => null], $this->form->getViewData()); }
public function testViewDataMayBeArrayAccessIfDataClassIsNull() { $arrayAccess = $this->getMock('\\ArrayAccess'); $config = new FormConfigBuilder('name', null, $this->dispatcher); $config->addViewTransformer(new FixedDataTransformer(array('' => '', 'foo' => $arrayAccess))); $form = new Form($config); $form->setData('foo'); $this->assertSame($arrayAccess, $form->getViewData()); }
private function assertForm(Form $form) { static::assertTrue($form->isSynchronized()); static::assertSame((string) $this->time, $form->getViewData()); }