/** * @param Field $field * @throws ConfigException */ protected function setDefaultOptions(Field $field) { $options = $field->getOptions(); $defaultOptions = $this->provideDefaultOptions(); $requiredOptions = $this->provideRequiredOptions(); $requiredOptions = array_combine($requiredOptions, $requiredOptions); $resultOptions = array_merge($defaultOptions, $options); $unexistedOptions = array_diff_key($requiredOptions, $resultOptions); if (count($unexistedOptions)) { throw new ConfigException(sprintf('Field \'%s\' (with type \'%s\') must contain required options: \'%s\'.', $field->getName(), $field->getType(), implode('\', \'', $unexistedOptions))); } $field->setOptions($resultOptions); }