我正在处理一些用户注册码,我想知道放置验证码的最佳位置。我可以创建一个用户验证对象并将用户模型传递给它进行验证,或者我可以在用户模型中实例化验证对象,甚至将验证代码写入用户模型,但是,我认为这将是浪费,因为验证对象/代码仅在注册和编辑用户数据时使用。因此,我倾向于将用户验证对象保持在外部。有人可以告诉我最佳做法是什么吗?感谢您的帮助!
答案 0 :(得分:4)
一般来说,我会说让用户模型负责维护自己的有效性。将这些不变量放在模型本身中。然后, nothing 可以使用户处于无效状态,而不仅仅是您当前的创建和编辑功能。
答案 1 :(得分:2)
我通常将我的验证代码与MVC应用程序中的模型代码分开。基本上我的所有模型都假设传递给它们的数据已经是干净/正确的。这允许更可读的模型代码,以及验证代码的更多集中/重用。
答案 2 :(得分:0)
我倾向于将验证代码与模型分开。实际上,它与界面的代码更相关。
创建模型时,无法确定界面。也许你将有2个或更多的形式来处理单个对象的数据:
---------
| Form1 |
--------- ------------- / ---------
| model | - | Validator |
--------- ------------- \ ---------
| Form2 |
---------
如果验证器绑定到模型,则不能支持多个表单。假设您有两个表单的验证器。然后你可能会得到一些非常有趣的消息。例如,“字段X是必需的”并且让用户想知道地球X在哪里。 (字段X是另一种形式......)
因此,从这个角度来看,这个解决方案更好:
-------------- ---------
| Validator1 | - | Form1 |
--------- / -------------- ---------
| model |
--------- \ -------------- ---------
| Validator2 | - | Form2 |
-------------- ---------