FluidTYPO3\Flux\Form\Container\Section::create PHP Method

create() public static method

public static create ( array $settings = [] ) : Section
$settings array
return Section
    public static function create(array $settings = array())
    {
        /** @var ObjectManagerInterface $objectManager */
        $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
        /** @var Section */
        $section = $objectManager->get('FluidTYPO3\\Flux\\Form\\Container\\Section');
        foreach ($settings as $settingName => $settingValue) {
            $setterMethodName = ObjectAccess::buildSetterMethodName($settingName);
            if (TRUE === method_exists($section, $setterMethodName)) {
                ObjectAccess::setProperty($section, $settingName, $settingValue);
            }
        }
        if (TRUE === isset($settings['objects'])) {
            foreach ($settings['objects'] as $fieldName => $objectSettings) {
                if (FALSE === isset($objectSettings['name'])) {
                    $objectSettings['name'] = $fieldName;
                }
                $object = Object::create($objectSettings);
                $section->add($object);
            }
        }
        return $section;
    }

Usage Example

Esempio n. 1
0
 /**
  * @param array $settings
  * @return FieldInterface
  * @throws \RuntimeException
  */
 public static function create(array $settings = array())
 {
     /** @var ObjectManagerInterface $objectManager */
     $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     if ('Section' === $settings['type']) {
         return Section::create($settings);
     } else {
         $prefix = 'FluidTYPO3\\Flux\\Form\\Field\\';
         $type = $settings['type'];
         $className = str_replace('/', '\\', $type);
         $className = TRUE === class_exists($prefix . $className) ? $prefix . $className : $className;
     }
     if (FALSE === class_exists($className)) {
         $className = $settings['type'];
     }
     if (FALSE === class_exists($className)) {
         throw new \RuntimeException('Invalid class- or type-name used in type of field "' . $settings['name'] . '"; "' . $className . '" is invalid', 1375373527);
     }
     /** @var FormInterface $object */
     $object = $objectManager->get($className);
     foreach ($settings as $settingName => $settingValue) {
         $setterMethodName = 'set' . ucfirst($settingName);
         if (TRUE === method_exists($object, $setterMethodName)) {
             call_user_func_array(array($object, $setterMethodName), array($settingValue));
         }
     }
     return $object;
 }
All Usage Examples Of FluidTYPO3\Flux\Form\Container\Section::create