Я написал собственный валидатор, расширяющий Zend\Validator\AbstractValidator, который предназначен для проверки поля в моем REST API на основе Apigility. Я копался в документации и примерах, и мне еще предстоит увидеть пример того, как это делается.
В моем module.config.php я добавил его в поле под валидатором в input_filter_specs. Вот так:
...
'input_filter_specs' => [
'Application\\V1\\Rest\\Class\\Validator' => [
[
'type' => 'Float',
'required' => true,
'validators' => [
'name' => 'Zend\\I18n\\Validator\\IsFloat',
'options' => [],
],
'filters' => [],
'name' => 'aFloatParameter',
'description' => 'Float based parameter',
],
[
'type' => 'String',
'required' => false,
'validators' => [
'name' => 'Application\\Validator\\CustomValidator',
'options' => [],
],
'filters' => [],
'name' => 'parameterToValidate',
'description' => 'This is a parameter to be validator',
],
],
...
Когда я делаю запрос, все встроенные валидаторы Zend работают должным образом, а мой собственный класс валидатора - нет.
Ошибок нет, просто не срабатывает.
Может ли кто-нибудь помочь мне понять, что мне не хватает? Нужно ли мне регистрировать валидатор еще где-нибудь?
TIA






Вы должны указать свой валидатор в ключе validators конфигурации под ключом invokable или factories. Также модуль Zend/Validator должен быть в конфигурации ваших модулей. Итак, конфигурация модулей вроде:
return [
'modules' => [
....
'Zend\Validator',
....
]
];
и конфигурация валидаторов;
return [
'validators' => [
'invokables' => [
'Application\\Validator\\CustomValidator',
]
]
];
Таким образом, ValidatorManager будет знать, что это такое и как его называть.
Это следует принять как ответ. Однажды у меня была такая же проблема, и я забыл добавить ключ конфигурации
validators