/** * @param array $settings * @return \FluidTYPO3\Flux\Form\Container\Section */ public static function create(array $settings) { /** @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; }
/** * @test */ public function getFieldsGetsFields() { $container = Object::create(array('name' => 'test')); $container->createField('Input', 'test'); $this->assertCount(1, $container->getFields()); }
/** * @test */ public function prefixesParentObjectNameToAutoLabelIfInsideObject() { $instance = $this->createInstance(); $parent = Form\Container\Object::create(); $parent->setName('parent'); $instance->setName('child'); $parent->add($instance); $output = $instance->getLabel(); $this->assertContains('parent.child', $output); }