eth8505 / laminas-api-tools-rest-queryparam-validation
query string validation for laminas-api-tools/api-tools-rest
Installs: 8 511
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
- laminas-api-tools/api-tools-api-problem: ^1.3
- laminas-api-tools/api-tools-content-validation: ^1.8
- laminas-api-tools/api-tools-rest: ^1.5
- laminas/laminas-eventmanager: ^3.3
- laminas/laminas-inputfilter: ^2.10
- laminas/laminas-servicemanager: ^3.4
Requires (Dev)
- phpunit/phpunit: ^9.5
README
The LaminasRestQueryParamValidation module allows you to validate query parameters with laminas-api-tools/api-tools-rest just like you would with laminas-api-tools/api-tools-content-validation for entities.
How to install
Install eth8505/laminas-api-tools-rest-queryparam-validation
package via composer.
$ composer require eth8505/laminas-api-tools-rest-queryparam-validation
Load the module in your application.config.php
file like so:
<?php return [ 'modules' => [ 'LaminasRestQueryParamValidation', // ... ], ];
How to use
Just like with laminas-api-tools/api-tools-content-validation, specify a
query_filter
key in the api-tools-content-validation
section of your module.config.php
and register a
input_filter_spec
. The Laminas API Tools docs
dig into this a little deeper.
Generic query param validation for a rest controller
<?php return [ // ... 'api-tools-content-validation' => [ 'MyModule\\V1\\Rest\\MyModule\\Controller' => [ 'query_filter' => 'MyModule\\V1\\Rest\\MyModule\\QueryValidator', ], ], // ... 'input_filter_specs' => [ 'MyModule\\V1\\Rest\\MyModule\\QueryValidator' => [ 0 => [ 'required' => false, 'validators' => [ // ... ], 'filters' => [], 'name' => 'my_param', 'field_type' => 'integer', ], ], ], ];
Action-specific query-validation
<?php return [ // ... 'api-tools-content-validation' => [ 'MyModule\\V1\\Rest\\MyModule\\Controller' => [ 'query_filter' => [ 'default' => 'MyModule\\V1\\Rest\\MyModule\\QueryValidator', 'fetchAll' => 'MyModule\\V1\\Rest\\MyModule\\FetchAllQueryValidator' ], ], ], // ... 'input_filter_specs' => [ 'MyModule\\V1\\Rest\\MyModule\\QueryValidator' => [ 0 => [ 'required' => false, 'validators' => [ // ... ], 'filters' => [], 'name' => 'my_param', 'field_type' => 'integer', ], ], 'MyModule\\V1\\Rest\\MyModule\\FetchAllQueryValidator' => [ 0 => [ 'required' => false, 'validators' => [ // ... ], 'filters' => [], 'name' => 'my_fetch_all_param', 'field_type' => 'integer', ], ] ], ];
Thanks
Thanks to jdelisle and his Query String validation gist which this module is based on.