src/Templates/Validator/PatternProperties.phptpl
(function () use ($properties, &$invalidProperties, $modelData) {
{% if generatorConfiguration.collectErrors() %}
$originalErrorRegistry = $this->_errorRegistry;
{% endif %}
$rollbackValues = $this->_patternProperties;
foreach ($properties as $propertyKey => $value) {
try {
if (!preg_match(base64_decode('{{ pattern }}'), $propertyKey)) {
continue;
}
{% 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 (!isset($this->_patternPropertiesMap[$propertyKey])) {
$this->_patternProperties['{{ patternHash }}'][$propertyKey] = $value;
}
} catch (\Exception $e) {
// collect all errors concerning invalid pattern properties
isset($invalidProperties[$propertyKey])
? $invalidProperties[$propertyKey][] = $e
: $invalidProperties[$propertyKey] = [$e];
}
}
{% if generatorConfiguration.collectErrors() %}
$this->_errorRegistry = $originalErrorRegistry;
{% endif %}
if (!empty($invalidProperties)) {
$this->_patternProperties = $rollbackValues;
}
return !empty($invalidProperties);
})()