Exemplo n.º 1
0
 /**
  * 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);
         }
     }
 }