如何让Apigility API使用我的自定义验证器?

时间:2018-03-29 19:05:11

标签: php zend-framework apigility zend-validate

我编写了一个扩展Zend\Validator\AbstractValidator的自定义验证程序,用于检查基于Apigility的REST API中的字段。我一直在挖掘文档和示例,我还没有看到这样做的例子。

在我的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

1 个答案:

答案 0 :(得分:1)

您应该在 Open High Low Close Volume 2018-02-20 09:30:00 17.300 17.3000 17.300 17.300 701 2018-02-20 09:40:00 17.425 17.4250 17.425 17.425 100 2018-02-20 09:42:00 17.450 17.4500 17.450 17.450 100 2018-02-20 09:48:00 17.400 17.6000 17.400 17.550 644 2018-02-20 09:54:00 17.450 17.4500 17.450 17.450 150 2018-02-20 09:59:00 17.450 17.4500 17.450 17.450 300 validators密钥下的配置的invokable密钥中提及您的验证程序。此外,factories模块必须位于模块配置中。所以模块配置像;

Zend/Validator

和验证器配置;

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

通过这种方式,return [ 'validators' => [ 'invokables' => [ 'Application\\Validator\\CustomValidator', ] ] ]; 将知道它是什么以及如何调用它。