/** * Set multiple properties of this object at once. * Every property which has a corresponding set* method can be set using * the passed $options array. * * @param array $options * @return void * @api */ public function setOptions(array $options) { if (isset($options['label'])) { $this->setLabel($options['label']); } if (isset($options['defaultValue'])) { $this->setDefaultValue($options['defaultValue']); } if (isset($options['properties'])) { foreach ($options['properties'] as $key => $value) { $this->setProperty($key, $value); } } if (isset($options['rendererClassName'])) { $this->setRendererClassName($options['rendererClassName']); } if (isset($options['renderingOptions'])) { foreach ($options['renderingOptions'] as $key => $value) { if (is_array($value)) { $currentValue = isset($this->getRenderingOptions()[$key]) ? $this->getRenderingOptions()[$key] : []; ArrayUtility::mergeRecursiveWithOverrule($currentValue, $value); $this->setRenderingOption($key, $currentValue); } else { $this->setRenderingOption($key, $value); } } } if (isset($options['validators'])) { foreach ($options['validators'] as $validatorConfiguration) { $this->createValidator($validatorConfiguration['identifier'], isset($validatorConfiguration['options']) ? $validatorConfiguration['options'] : []); } } ArrayUtility::assertAllArrayKeysAreValid($options, ['label', 'defaultValue', 'properties', 'rendererClassName', 'renderingOptions', 'validators', 'formEditor']); }