/** * Set the additionals from Element Typoscript configuration * * @param \TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element Model object * @param array $arguments Arguments * @return void */ public function setAdditionals(\TYPO3\CMS\Form\Domain\Model\Element\AbstractElement $element, array $arguments) { if (!empty($arguments)) { if ($element->hasAllowedAdditionals()) { $additionals = $element->getAllowedAdditionals(); foreach ($additionals as $additional) { if (isset($arguments[$additional . '.']) || isset($arguments[$additional])) { if (isset($arguments[$additional]) && isset($arguments[$additional . '.'])) { $value = $arguments[$additional . '.']; $type = $arguments[$additional]; } elseif (isset($arguments[$additional . '.'])) { $value = $arguments[$additional . '.']; $type = 'TEXT'; } else { $value['value'] = $arguments[$additional]; $type = 'TEXT'; } try { $element->setAdditional($additional, $type, $value); } catch (\Exception $exception) { throw new \RuntimeException('Cannot call user function for additional ' . ucfirst($additional), 1333754941); } } if (isset($arguments['layout.'][$additional]) && $element->additionalIsSet($additional)) { $layout = $arguments['layout.'][$additional]; $element->setAdditionalLayout($additional, $layout); } } } else { throw new \InvalidArgumentException('The element with id=' . $element->getElementId() . ' has no additionals set.', 1333754962); } } }