php - MVC [Zend 框架] : where to apply filtering and validation

标签 php model-view-controller zend-framework

我有(我希望)一个非常简单的问题要问 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/

相关文章:

php - 如何捕获属于不同步骤/数组/位置的两个标签之间的多行正则表达式

php - Fontawesome 里面的提交按钮

model-view-controller - Model View Controller 与模型 View 演示器

java - 在spring mvc中上传图片

javascript - 将 AngularJS 与 SpringMVC 结合使用 - 为什么以及如何?

php - Zend 框架 : How to unset a key in Zend_Registry?

php - MySQL 使用 127.0.0.1 但不使用本地主机?

php - PHP的注意 undefined variable

php - 发送 : Select object: How do I replace the selected columns set by from()?

zend-framework - Zend Framework Bootstrap 问题