请求验证在Symfony

时间:2018-05-18 07:00:35

标签: php symfony symfony4 symfony-validator

假设我有一个创建用户的REST API方法。我还有一个配置了验证约束的用户实体。问题是如何验证请求中的数据。我的问题是:

  1. 我无法预先填充用户实例,而无需事先验证请求中的数据 - 其中可能缺少某些数据,其他数据可能无效。例如,null传递给用户实体的设置器,其中string类型提示。
  2. 我不太热衷于在填充用户实例之前单独验证请求数据,因为它将是为用户实体配置的验证约束的重复。在两个地方管理相同或类似的验证约束将是一个问题 - 控制器和实体验证配置。
  3. 所以基本上我想避免在代码和配置中重复验证约束,但同时我在填充实体之前不得不复制它。我怎么能克服这个?

1 个答案:

答案 0 :(得分:3)

这是非常生理的。

我建议使用没有检查限制的DTO(基本上你可以在你的setter中接受“所有类型的数据”,或者通过使公共属性不那么繁琐)并对其进行验证

当DTO有效时,创建一个有效状态的基础对象(值对象?)

当然你需要“复制”一些约束,但我不认为这是一个真正的重复,因为实际上,DTO和底层对象不是同一个对象即使他们似乎有关系。如果您不同意 - 可能就是这种情况 - 只需停止并考虑通过从用户输入数据所在的模型中解耦实体(应该总是处于有效状态)而获得的提升。服用。