Я написал собственный валидатор, который расширяет 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 работают должным образом, но мой пользовательский класс валидаторов — нет.
Ошибок нет, просто не срабатывает.
Может ли кто-нибудь помочь мне выяснить, что мне не хватает? Нужно ли регистрировать валидатор где-нибудь еще?
ТИА
Вы должны указать свой валидатор в validators
ключ конфига под invokable
или же factories
ключ. Также Zend/Validator
модуль должен быть в конфигурации ваших модулей. Таким образом, модули конфигурации, как;
return [
'modules' => [
....
'Zend\Validator',
....
]
];
и валидаторы конфигурации;
return [
'validators' => [
'invokables' => [
'Application\\Validator\\CustomValidator',
]
]
];
В этом случае, ValidatorManager
будет знать, что это такое и как это назвать.
Других решений пока нет …