Как заставить API Apigility использовать мой собственный валидатор?

Я написал собственный валидатор, расширяющий 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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
242
1

Ответы 1

Вы должны указать свой валидатор в ключе validators конфигурации под ключом invokable или factories. Также модуль Zend/Validator должен быть в конфигурации ваших модулей. Итак, конфигурация модулей вроде:

return [
    'modules' => [
       ....
        'Zend\Validator',
        ....
    ]
];

и конфигурация валидаторов;

return [
    'validators' => [
       'invokables' => [
           'Application\\Validator\\CustomValidator',
        ]
    ]
];

Таким образом, ValidatorManager будет знать, что это такое и как его называть.

Это следует принять как ответ. Однажды у меня была такая же проблема, и я забыл добавить ключ конфигурации validators

dickwan 28.08.2018 12:22

Другие вопросы по теме