private function renderFormFieldContent($renderApi, $unit) { $this->formSubmit = new \FormSubmit(); $fieldId = 'field' . $unit->getId(); $properties = $unit->getFormValues(); $labelText = $properties["fieldLabel"]; $listType = $properties["listType"]; //select, checkbox, radio $postRequest = $this->getPostValue($unit); $choiceBox = new \ChoiceBox(); if ($listType === \ListType::RADIO || $listType === \ListType::CHECKBOX) { $required = $renderApi->getFormValue($unit, 'enableRequired'); $formField = $choiceBox->getRadioCheckbox($renderApi, $unit, $fieldId, $postRequest, $required); } elseif ($listType === \ListType::DROP_DOWN) { $formField = $choiceBox->getSelectField($renderApi, $unit, $fieldId, $postRequest); } $label = new \Label(); $labelProperties = $label->getElementProperties(); $labelProperties->addAttribute("for", $fieldId); $label->add(new \Span($labelText)); if ($formField) { $elementProperties = $formField->getElementProperties(); $wrapper = new \Container(); $wrapper->add($label); $wrapper->add($formField); echo $wrapper->renderElement(); } $renderApi->renderChildren($unit); }
public function getRadioCheckbox($renderApi, $unit, $fieldId, $postRequestValue = null, $required = false) { $formField = new \Fieldset(); $listOptions = $this->listOptions->getListOptions($renderApi, $unit); $inputName = strlen($renderApi->getFormValue($unit, 'inputName')) > 0 ? $renderApi->getFormValue($unit, 'inputName') . "[]" : $fieldId . "[]"; if ($listOptions->hasOptions()) { $optionCount = 0; $options = $listOptions->getOptions(); $optionsLength = count($options); foreach ($options as $option) { /* @var $option \Option */ $properties = $unit->getFormValues(); if ($properties["listType"] === \ListType::RADIO) { $choiceField = new \RadioButtonField(); } elseif ($properties["listType"] === \ListType::CHECKBOX) { $choiceField = new \CheckboxField(); } $optionId = $fieldId . '_' . $optionCount; $elementProperties = $choiceField->getElementProperties(); $elementProperties->addAttribute("value", $option->getValue()); $elementProperties->addAttribute("name", $inputName); $elementProperties->addAttribute("id", $optionId); // set required attribute for radio options or when there is only one checkbox // don't set for multiple checkboxes to match server-side validation logic if ($required && ($properties["listType"] === \ListType::RADIO || $optionsLength === 1)) { $elementProperties->addAttribute("required", null); } $request = new Request(); $request->isPostRequest(); if (!$request->isPostRequest() && $option->isChecked() || !is_null($postRequestValue) && in_array($option->getValue(), $postRequestValue)) { $elementProperties->addAttribute("checked", null); } $label = new \Label(); $label->add($choiceField); $label->add(new \Span($option->getName())); $labelProperties = $label->getElementProperties(); $labelProperties->addAttribute("for", $optionId); $formField->add($label); $optionCount++; } } if ($this->formSubmit->isValid($renderApi, $unit) && !$this->isValidValue($unit, $postRequestValue)) { $formField->add($this->getErrorMessage($unit, $postRequestValue)); $formField->getElementProperties()->addClass('vf__error'); } return $formField; }
private function renderFormFieldContent($renderApi, $unit) { $this->formSubmit = new \FormSubmit(); $fieldId = 'field' . $unit->getId(); $properties = $unit->getFormValues(); $labelText = $properties["fieldLabel"]; $fieldType = $properties["textType"]; //input,list,textarea $postRequest = $this->getPostValue($unit); if ($properties['type'] === \InputType::STRING && $fieldType !== FieldType::TEXTAREA || $properties['type'] === \InputType::EMAIL || $properties['type'] === \InputType::NUMERIC) { $formField = new \TextField(); $elementProperties = $formField->getElementProperties(); $elementProperties->setId($fieldId); $elementProperties->addAttribute("name", $fieldId); $elementProperties->addAttribute('value', $postRequest); if (isset($properties['type'])) { if ($properties['type'] === \InputType::EMAIL) { $elementProperties->addAttribute("type", \InputType::EMAIL); } if ($properties['type'] === \InputType::NUMERIC) { $elementProperties->addAttribute("type", \InputType::NUMERIC); } } } elseif ($fieldType === FieldType::TEXTAREA) { $formField = new \TextareaField(); $elementProperties = $formField->getElementProperties(); $elementProperties->setId($fieldId); $elementProperties->addAttribute("name", $fieldId); $formField->setContent($postRequest); } $label = new \Label(); $labelProperties = $label->getElementProperties(); $labelProperties->addAttribute("for", $fieldId); $label->add(new \Span($labelText)); if ($formField) { $wrapper = new \Container(); $wrapper->add($label); $wrapper->add($formField); $elementProperties = $formField->getElementProperties(); if ($this->formSubmit->isValid($renderApi, $unit) && !$this->isValidValue($unit, $postRequest)) { $elementProperties->addClass('vf__error'); $wrapper->add($this->getErrorMessage($unit, $postRequest)); } $this->setRequiredField($renderApi, $unit, $elementProperties); $this->setPlaceholderText($renderApi, $unit, $elementProperties); echo $wrapper->renderElement(); } $renderApi->renderChildren($unit); }