eth8505/laminas-api-tools-rest-queryparam-validation

query string validation for laminas-api-tools/api-tools-rest

2.1.0 2024-02-16 13:56 UTC

This package is auto-updated.

Last update: 2024-04-16 14:39:59 UTC


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.

CI Status Packagist Packagist Version PHP from Packagist

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.