我有(我希望)一个非常简单的问题要问 MVC 结构的专家:
在哪里应用输入过滤和验证? Controller 还是模型?
我已经阅读了很多关于过滤用户输入的教程和手册,但没有注意到很多关于应该应用它的讨论。当使用表单时,它很简单,实际上几乎所有事情都由 Zend_Form 通过 Zend_Filter 和 Zend_Validate 为您完成。
但是,当我必须从用户输入中过滤单个值并将其传递给模型时,最佳做法是什么,是在将其传递给模型之前进行清理,还是在模型本身进行清理?
假设我正在创建一个其他人也会使用的模型,并且它正在文件系统上做一些重要的工作。我能 100% 确定其他人会在将参数传递给模型之前正确准备参数吗?我不是,所以最好的办法是清理模型本身的参数。
但这只是我的想法,正如我之前所说,我想听听您的意见,来自专业的大师 ;)
美好的一天。
最佳答案
恕我直言,这取决于您是否事先知道您必须进行的验证类型。
如果它是可以用正则表达式表示的东西,请将它留在 Controller 中,否则我认为模型应该是它的位置。
示例。
您必须验证一个电子邮件地址:controller,这样模型就可以传递一些经过净化的输入,并只负责实际处理。
您必须检查文件系统中的路径是否存在: Controller 将负责查看它是否是构建良好的路径;该模型将检查它是否确实存在于相关文件系统中。
您必须检查用户提供的字符串 $x 是否可以生成您存储在某处的哈希值 $y:model。
关于php - MVC [Zend 框架] : where to apply filtering and validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526870/