【发布时间】:2015-08-01 06:52:06
【问题描述】:
在我的应用程序输入中,我有以下数据:airplane_id、airport_id 和 passenger(s) 详细信息。
我需要确保所选的 airplane_id 可以到达 airport_id。它可能只在 SQL 查询的帮助下完成,但这种检查仍然是一个验证过程,不是吗?
验证应该在我保存乘客详细信息之前进行。
在我的应用程序模型中,它是表示表格的 ActiveRecord 模式对象。我宁愿将 Validator 作为一个单独的层,也不愿将其构建到 Model 层中。但在这种情况下,我有一个额外的问题:通常验证器是通用的(它们的规则可能适用于任何数据集)。例如,这是数据电子邮件吗?还是IP?或日期?等等......但不要介意数据是什么。
就我而言,上述规则根本不常见。它肯定是一个特定的规则,不能被任何其他输入数据使用。所以我的问题是:这种检查仍然是验证过程的一部分吗?
如果是,Validator 是否会违反SOLID 集合中的S 原则?
【问题讨论】:
-
我怀疑它是否会违反任何重要的内容。与在创建新用户之前检查用户名是否唯一没有太大区别。不妨看看 Symfony 验证组件是如何组织事物的:symfony.com/doc/master/book/validation.html
-
@Cerad 你知道如何在 Symfony Validator 的帮助下组织验证吗?
-
首先阅读文档:github.com/symfony/Validator
-
@Cerad 您可能没有阅读我原来的问题。 Symfony 验证器不允许您发出 db 请求来验证复杂数据。例如对于电子商务:验证篮子总和是更少还是更多定义的金额?并且每个类别的定义金额不同,意味着从类别 A 中您最多只能选择 10 美元,从类别 B 中选择 8 美元等。所有这些限制都存储在数据库中,您知道如何在 Symfony 验证器的帮助下实现这种情况?
-
很确定我读过这个问题。是的,Symfony 验证器确实可以访问数据库。或许可以看一下手册?
标签: php validation model-view-controller domain-driven-design solid-principles