public static function renderErrors(\Vegas\Forms\Form $form) { $errorsMessages = array(); $errors = $form->getMessages(); foreach ($errors as $error) { $formElement = $form->get($error->getField()); $errorsMessages[$formElement->getLabel()] = $error->getMessage(); } return $errorsMessages; }
public function testEmptyArray() { $defaultTest = ['test1' => ['en' => 'foo', 'foo' => 'test11'], 'test2' => ['nl' => 'bar', 'foo' => 'test22'], 'test3' => ['ru' => 'baz', 'foo' => 'test33'], 'test4' => ['es' => 'asdf', 'foo' => 'test44']]; $model = new FakeModel(); $model->test = $defaultTest; $form = new Form(); $text = new Text('test[test1][en]'); $form->add($text); $text = new Text('test[test2][nl]'); $form->add($text); $text = new Text('test[test3][ru]'); $form->add($text); // empty values $values = ['test' => ['test1' => ['en' => ''], 'test2' => ['nl' => null], 'test3' => ['ru' => 0]]]; $form->bind($values, $model); $this->assertTrue($form->isValid()); $this->assertArrayHasKey('test1', $model->test); $this->assertArrayHasKey('test2', $model->test); $this->assertArrayHasKey('test3', $model->test); $this->assertArrayHasKey('test4', $model->test); $this->assertEquals('', $model->test['test1']['en']); $this->assertEquals('test11', $model->test['test1']['foo']); $this->assertEquals('bar', $model->test['test2']['nl']); $this->assertEquals('test22', $model->test['test2']['foo']); $this->assertEquals(0, $model->test['test3']['ru']); $this->assertEquals('test33', $model->test['test3']['foo']); $this->assertEquals('asdf', $model->test['test4']['es']); $this->assertEquals('test44', $model->test['test4']['foo']); }
/** * Acts as factory pattern: generates form object with all dependent elements. * Each element should be represented by a specific trait. * Uses i18n for provided labels. * * @param array $data each form element data * @return \Vegas\Forms\Form full instance of form * @throws \Vegas\Forms\Builder\Exception\InvalidInputSettingsException When provided invalid (manipulated) input */ public function createForm(array $data) { $form = new GenericForm(); foreach ($data as $item) { $element = $this->callBuilderMethod($item); if ($element->getLabel()) { $element->setLabel($this->getDI()->get('i18n')->_($element->getLabel())); } $additionalOptions = $this->callAdditionalOptionsMethod($item); if ($additionalOptions !== null) { foreach ($additionalOptions as $option) { if (isset($item[$option->getName()])) { $element->setAttribute($option->getName(), $item[$option->getName()]); } } } $form->add($element); } return $form; }