예제 #1
0
 /**
  * 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']);
 }