API Platform中RangeFilter注解的alias选项无法正常工作
解决API Platform中RangeFilter别名配置失效及Swagger控件消失问题
问题重现
原本正常工作的RangeFilter配置:
#[ApiFilter(RangeFilter::class, properties: ['property_name'])]
尝试添加alias后配置失效,Swagger中的范围过滤项消失:
#[ApiFilter(RangeFilter::class, properties: ['property_name'], alias: 'alias')]
预期用别名alias替代属性名在URL中过滤:host/api/endpoint?page=1&alias[gt]=5000&alias[lt]=7000,但实际功能未生效。
问题原因
错误地将alias作为ApiFilter注解的顶层参数使用,而RangeFilter这类属性级过滤器的别名需要针对单个属性单独配置,而非全局设置。
正确配置方式
将alias嵌套在properties数组中对应属性的配置项里:
#[ApiFilter(RangeFilter::class, properties: [ 'property_name' => [ 'alias' => 'alias' ] ])]
验证效果
配置完成后:
- 可通过别名在URL中发起范围过滤:
host/api/endpoint?page=1&alias[gt]=5000&alias[lt]=7000 - Swagger文档中会正常显示以
alias命名的范围过滤输入控件,功能与原属性名过滤一致。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

