验证为表单的属性

And*_*rea 6 php validation symfony1 cakephp

在CakePHP框架中,验证规则是模型的一个属性.也就是说,数据的来源并不重要:当你想在模型中编写它时,它必须通过验证.

而不是在symfony中,您为每个表单指定验证规则.由于每个模型可能有多个表单(并且表单可能涉及来自不同模型的数据),结果是某些模型的数据可能必须根据其来自的形式传递不同的过滤器.

我知道这可能偶尔会有用,而且如果你愿意,CakePHP确实提供了动态指定不同验证规则的方法.但这是例外,而不是规则.在我看来,设计另一种方式为错误打开了大门,您可以在其中更新验证规则,但忘记检查所有表单.

另一方面,我确信Fabien Potencier比我聪明,并且可能已经考虑过这个设计.所以我的问题是:

进行每个表单验证的理由是什么(通常不是例外)?

Abb*_*ant 3

我想说它们是两个不同的东西。

模型验证 - 验证进入模型的数据对于持久性有效并保持业务逻辑完整性(常见的 CakePHP 验证)

表单数据过滤 - 验证表单是否使用可接受的值填写。显然存在一些重叠,并且很多时候表单验证是由模型验证处理的。其他时候可能不是。

例如,表单可能需要知道复选框的状态,以便确定需要显示的向导的下一部分。这与模型无关,但却是有效的验证要求。(复选框或单选按钮具有一组合法值中的值)

当然,使用 CakePHP,您可以轻松地编写一个组件/行为组合,使用验证数组中的键控索引来处理这两种情况。很容易设置一个始终使用的“默认”键,以及确定附加验证逻辑的每个“操作”的键。

如果你用谷歌搜索一下,甚至还有一些预先构建的解决方案。