Symfony 验证。 API 资源验证自定义逻辑

时间:2021-07-10 14:25:01

标签: php symfony

我想编写基础验证器。是否可以捕获实体的“预验证”事件? 如果可能,我将使用当前实体动态约束调用 ValidatorInterface。 这是我自己的研究,我只学习:)

1 个答案:

答案 0 :(得分:1)

symfony 中没有这样的事件“预验证”,但是您可以随时使用 EventDispatcher 调度您自己的事件,并在 EventListener 或 EventSubscriber 中处理它们。

但我想你根本就不要在实体上运行验证器。实体是一个领域术语,尽量避免使用其中的基础设施代码。输入验证就是这种“基础设施”代码的一个例子。考虑创建另一个类,如 InputDto,它将直接从请求映射,然后使用验证器进行验证(可能分几个阶段:您可以运行一个验证组,然后转换一些值,然后运行下一个验证组等等)。然后通过将有效数据从 DTO 传递给实体构造函数来创建实体。

这种方法将保证如果实体被创建,它处于有效状态。