使用 Symfony Validator 进行复杂的对象验证

问题描述 投票:0回答:0

我有一个对象(一个人)正在通过多种形式进行编辑(和验证):

  • 个人资料表格
    • 名字
    • 姓氏
    • 照片上传的文件输入
  • 账户数据表
    • 电子邮件
  • 发布形式
    • 只有在所有必填字段都已填写后才能发布

我需要的是验证我可以使用每个表单以及整个人,例如错误是:

  • 个人数据表-“请填写您的名字”,……
  • 整个人-“请填写您的个人资料”,……

如果我在实体中定义验证,可能仍然有一些规则是仅限表单的(文件上传、密码重复);无论如何,这似乎有点不对,因为我可能对 Web 表单和 API 有不同的规则。然后,如果我在 Form 类中定义验证,那么规则就散布在周围,还有我如何在没有提交表单的情况下启动验证(无论如何这似乎是一件很老套的事情)。

在我看来,最优雅的解决方案是一个单独的验证器,我可以将其划分为验证组,并将其称为每个表单和整个对象。如何使用复合验证器做到这一点,以便我可以使用其他验证器?

或者有别的办法吗?谢谢。

Symfony 版本是 6.

php symfony symfony-forms symfony6 symfony-validator
© www.soinside.com 2019 - 2024. All rights reserved.