FluidTYPO3\Flux\Form\AbstractFormField::create PHP Метод

create() публичный статический Метод

public static create ( array $settings = [] ) : FluidTYPO3\Flux\Form\FieldInterface
$settings array
Результат FluidTYPO3\Flux\Form\FieldInterface
    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;
    }

Usage Example

 /**
  * @param array $settings
  * @return FormInterface
  */
 public static function create(array $settings = array())
 {
     /** @var ObjectManagerInterface $objectManager */
     $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     $className = get_called_class();
     /** @var FormInterface $object */
     $object = $objectManager->get($className);
     foreach ($settings as $settingName => $settingValue) {
         $setterMethodName = ObjectAccess::buildSetterMethodName($settingName);
         if (TRUE === method_exists($object, $setterMethodName)) {
             ObjectAccess::setProperty($object, $settingName, $settingValue);
         }
     }
     if (TRUE === $object instanceof FieldContainerInterface && TRUE === isset($settings['fields'])) {
         foreach ($settings['fields'] as $fieldName => $fieldSettings) {
             if (FALSE === isset($fieldSettings['name'])) {
                 $fieldSettings['name'] = $fieldName;
             }
             $field = AbstractFormField::create($fieldSettings);
             $object->add($field);
         }
     }
     return $object;
 }
All Usage Examples Of FluidTYPO3\Flux\Form\AbstractFormField::create