【发布时间】:2011-02-24 14:59:07
【问题描述】:
在 CakePHP 框架中,验证规则是模型的一个属性。也就是说,数据来自哪里并不重要:当您想将其写入模型时,它必须通过验证。
在 symfony 中,您可以为每个表单指定验证规则。由于每个模型可能有多个表单(并且表单可能涉及来自不同模型的数据),因此某些模型的数据可能必须根据其来自的表单通过不同的过滤器。
我知道这可能偶尔有用,而且如果您愿意,CakePHP 确实提供了动态指定不同验证规则的方法。但这是例外,而不是规则。在我看来,另一种方式的设计为错误打开了大门,您可以在其中更新验证规则,但忘记检查所有表单。
另一方面,我确信 Fabien Potencier 比我更聪明,并且可能已经对这个设计进行了一些思考。所以我的问题是:
进行表单验证的充分理由是什么(通常,而不是例外)?
【问题讨论】:
-
为什么投反对票?我认为这是一个关于设计选择的合理问题。 :-?
-
“在我看来,另一种方式的设计为错误打开了大门,您可以在其中更新验证规则,但忘记检查所有表单。”如果我正确理解您的担忧,您可以通过创建表单的子类并仅更改特定于该子类的验证器来避免这种情况。例如,要针对特定类型的用户表单将电子邮件限制到特定域,如 circusdei 的示例,请创建
class UserRegistrationForm extends UserForm并将“全局”验证器替换为特定验证器。
标签: php validation cakephp symfony1