我在我的 REST API 中使用了 laminas-inputfilter、laminas-filter 和 laminas-validator。
我的过滤器配置如下所示,例如:
'input_filter_specs' => [
MyResource::class . '\\Validator' => [
'param1' => ...,
'param2' => ...,
'param3' => [
'required' => false,
'allow_empty' => false,
'filters' => [
'no_tags' => [
'name' => StripTags::class,
],
'no_newlines' => [
'name' => StripNewlines::class,
],
'trim' => [
'name' => StringTrim::class,
],
],
'validators' => [
'not_empty' => [
'name' => NotEmpty::class,
],
],
],
],
],
到目前为止,过滤和验证也可以完美运行。但让我吃惊的是:我向包含 param1 和 param2 的 API 发出请求,我故意省略了 param3。但是,如果我现在查看 REST 服务接收的数组,我会发现:
Array
(
[param1] => one
[param2] => two
[param3] =>
)
这意味着自动添加可选参数并用空字符串填充。然而,这种行为对我来说有点不利,因为它与我的进一步处理相冲突。
是否有可能(例如通过配置开关)仅在设置输入参数时验证输入参数,否则将它们从数组中排除?