src/Templates/Validator/AdditionalProperties.phptpl
(function () use ($properties, &$invalidProperties, $modelData) {
{% if generatorConfiguration.collectErrors() %}
$originalErrorRegistry = $this->_errorRegistry;
{% endif %}
{% if collectAdditionalProperties %}
$rollbackValues = $this->_additionalProperties;
{% endif %}
foreach (array_diff(array_keys($properties), {{ additionalProperties }}) as $propertyKey) {
{% if patternProperties %}
foreach ({{ patternProperties }} as $pattern) {
if (preg_match("/$pattern/", $property)) {
continue 2;
}
}
{% endif %}
try {
$value = $properties[$propertyKey];
{% if generatorConfiguration.collectErrors() %}
$this->_errorRegistry = new {{ viewHelper.getSimpleClassName(generatorConfiguration.getErrorRegistryClass()) }}();
{% endif %}
{{ viewHelper.resolvePropertyDecorator(validationProperty) }}
{% foreach validationProperty.getOrderedValidators() as validator %}
{{ viewHelper.renderValidator(validator, schema) }}
{% endforeach %}
{% if generatorConfiguration.collectErrors() %}
if ($this->_errorRegistry->getErrors()) {
$invalidProperties[$propertyKey] = $this->_errorRegistry->getErrors();
}
{% endif %}
{% if collectAdditionalProperties %}
$this->_additionalProperties[$propertyKey] = $value;
{% endif %}
} catch (\Exception $e) {
// collect all errors concerning invalid additional properties
isset($invalidProperties[$propertyKey])
? $invalidProperties[$propertyKey][] = $e
: $invalidProperties[$propertyKey] = [$e];
}
}
{% if generatorConfiguration.collectErrors() %}
$this->_errorRegistry = $originalErrorRegistry;
{% endif %}
{% if collectAdditionalProperties %}
if (!empty($invalidProperties)) {
$this->_additionalProperties = $rollbackValues;
}
{% endif %}
return !empty($invalidProperties);
})()