API Platform中如何使用YAML配置添加验证约束,替代注解配置
API Platform YAML格式配置验证约束方法
API Platform的验证能力底层复用Symfony Validator组件,YAML配置和注解配置的约束规则完全通用,只需要在资源配置的对应层级添加constraints节点即可。
1. 配置路径说明
资源YAML配置通常存放于项目config/packages/api_platform/resources/目录下,建议按对应实体名拆分独立配置文件。
2. 完整配置示例
以下为图书实体资源的YAML配置示例,包含属性级和实体级约束配置:
resources: App\Entity\Book: attributes: # 实体级别全局约束,作用于整个实体的提交数据 constraints: - Symfony\Component\Validator\Constraints\Callback: [App\Validator\BookValidator::validate] properties: title: # 标题属性的验证约束 constraints: - NotBlank: ~ - Length: min: 2 max: 255 minMessage: "标题长度不能少于2个字符" maxMessage: "标题长度不能超过255个字符" isbn: constraints: - NotBlank: ~ - Symfony\Component\Validator\Constraints\Isbn: type: isbn13 message: "请输入合法的ISBN-13编码" publishDate: constraints: - NotBlank: ~ - DateTime: ~ - LessThanOrEqual: "today"
3. 常用配置说明
- 所有Symfony Validator自带约束、自定义约束都可直接使用,未引入约束命名空间前缀时需填写约束的全类名
- 约束的参数配置和注解写法完全一致,仅需将注解参数转换为YAML键值对格式即可
- 分组验证可通过给约束添加
groups参数实现,指定约束生效的验证组,示例如下:email: constraints: - NotBlank: groups: ['user:create'] - Email: groups: ['user:create', 'user:update']
内容的提问来源于stack exchange,提问作者JC Cavalca
相关产品推荐
相关产品推荐

