/** * Set the name and id attribute * * @return array */ public function setNameAndId() { if ($this->element->getParentElement() && (int) $this->typoScriptRepository->getModelConfigurationByScope($this->element->getParentElement()->getElementType(), 'childrenInheritName') == 1) { $this->htmlAttributes['name'] = $this->element->getParentElement()->getName(); $this->additionalArguments['multiple'] = '1'; $name = $this->sanitizeNameAttribute($this->userConfiguredElementTyposcript['name']); $this->element->setName($name); } else { $this->htmlAttributes['name'] = $this->sanitizeNameAttribute($this->htmlAttributes['name']); $this->element->setName($this->htmlAttributes['name']); } $this->htmlAttributes['id'] = $this->sanitizeIdAttribute($this->htmlAttributes['id']); $this->element->setId($this->htmlAttributes['id']); }
/** * Handle the incoming form data * * @param Element $element The element * @param ValidationElement $validationElement * @param mixed $modelValue * @param FormBuilder $formBuilder * @return void */ public function handleIncomingFormValues(Element $element, ValidationElement $validationElement, $modelValue, FormBuilder $formBuilder) { $elementName = $element->getName(); if ($element->getElementType() === 'CHECKBOX') { $groupedElement = false; if ($element->getParentElement()->getElementType() === 'CHECKBOXGROUP') { $incomingName = $element->getParentElement()->getName(); $groupedElement = true; } else { $incomingName = $elementName; } $incomingData = $formBuilder->getIncomingData()->getIncomingField($incomingName); $checked = false; if (is_array($incomingData)) { if (isset($incomingData[$elementName]) && $incomingData[$elementName] !== '') { $this->setAttribute($element, 'checked', 'checked'); $checked = true; } else { $this->setAttribute($element, 'checked', null); } } else { if (!empty($modelValue) && $incomingData === $modelValue || $incomingData === $incomingName . '-' . $element->getElementCounter()) { $this->setAttribute($element, 'checked', 'checked'); $checked = true; } else { $this->setAttribute($element, 'checked', null); } } if ($groupedElement && $checked) { $element->getParentElement()->setAdditionalArgument('atLeastOneCheckedChildElement', true); } } elseif ($element->getElementType() === 'RADIO') { $groupedElement = false; if ($element->getParentElement()->getElementType() === 'RADIOGROUP') { $incomingName = $element->getParentElement()->getName(); $groupedElement = true; } else { $incomingName = $elementName; } $checked = false; $incomingData = $formBuilder->getIncomingData()->getIncomingField($incomingName); if (!empty($modelValue) && $incomingData === $modelValue || $incomingData === $incomingName . '-' . $element->getElementCounter()) { $this->setAttribute($element, 'checked', 'checked'); $checked = true; } else { $this->setAttribute($element, 'checked', null); } if ($groupedElement && $checked) { $element->getParentElement()->setAdditionalArgument('atLeastOneCheckedChildElement', true); } } elseif ($element->getElementType() === 'OPTION') { $modelValue = (string) ($element->getAdditionalArgument('value') ?: $element->getElementCounter()); if ($element->getParentElement()->getElementType() === 'OPTGROUP') { $parentName = $element->getParentElement()->getParentElement()->getName(); } else { $parentName = $element->getParentElement()->getName(); } $incomingData = $formBuilder->getIncomingData()->getIncomingField($parentName); /* Multiselect */ if (is_array($incomingData)) { if (in_array($modelValue, $incomingData, true)) { $element->setHtmlAttribute('selected', 'selected'); } else { $element->setHtmlAttribute('selected', null); } } else { if ($modelValue === $incomingData) { $element->setHtmlAttribute('selected', 'selected'); } else { $element->setHtmlAttribute('selected', null); } } } elseif ($element->getElementType() === 'TEXTAREA') { $incomingData = $formBuilder->getIncomingData()->getIncomingField($elementName); $element->setAdditionalArgument('text', $incomingData); } elseif ($element->getElementType() === 'FILEUPLOAD') { if ($formBuilder->getValidationErrors() == null || $formBuilder->getValidationErrors() && $formBuilder->getValidationErrors()->forProperty($elementName)->hasErrors() !== true) { $uploadedFiles = $formBuilder->getIncomingData()->getIncomingField($elementName); if (is_array($uploadedFiles)) { foreach ($uploadedFiles as $key => &$file) { $tempFilename = $this->saveUploadedFile($file['tmp_name']); if (!$tempFilename) { unset($uploadedFiles[$key]); continue; } $file['tempFilename'] = $tempFilename; } $element->setAdditionalArgument('uploadedFiles', $uploadedFiles); $this->setAttribute($element, 'value', ''); $this->sessionUtility->setSessionData($elementName, $uploadedFiles); } } } }