在WEB项目的开发中,项目的任何模块都会有数据添加的功能--比如用户注册、新闻添加、商品管理等,那么我们就会用到表单来传输数据,而添加数据时无论是前台用户还是后台管理员都避免不了填写无效数据或者错误数据,那么表单数据的验证就是我们在做项目中必不可少的。所以如果大家参与或者独立开发过WEB项目的话一定会发现在添加数据时大量的数据验证--比如用户名是否存在、验证码是否正确、密码是否填写一致、年龄是否是数字等问题,那么就会用到大量的数据库查找、正则表达式的编写等问题困扰大家。
在ThinkPHP中,内置了数据对象的自动验证和自动完成功能来完成模型的业务规则验证,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性。
$_validate属性的验证因子格式:
array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
*验证字段:表单字段名称,注:这个字段不一定是数据库字段,也可以是表单的一些辅助字段--比如确认密码和验证码等等。
*验证规则: 要进行验证的规则,有时需要结合附加规则。
内置验证规则--包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字,这些验证规则可以直接使用。注:如有其它验证规则则需自己编写方法
*提示信息: 用于验证失败后的提示信息。
验证条件:
0 或者 Model::EXISTS_TO_VAILIDATE--存在字段就验证 (默认)
1 或者 Model::MUST_TO_VALIDATE--必须验证
2 或者 Model::VALUE_TO_VAILIDATE--值不为空的时候验证
附加规则: 配合验证规则使用
regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)
function 使用函数验证,前面定义的验证规则是一个函数名 注:系统函数或自定义函数
callback 使用方法验证,前面定义的验证规则是当前Model类的一个方法 注:自定义方法
confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名
equal 验证是否等于某个值,该值由前面的验证规则定义
in 验证是否在某个范围内 注:前面定义的验证规则必须是一个数组
unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值 注:会请求数据库
验证时间:
1 或者 Model:: MODEL_INSERT--新增数据时候验证
2 或者 Model:: MODEL_UPDATE--编辑数据时候验证
3 或者 Model:: MODEL_BOTH--全部情况下验证(默认)
熟悉了$_validate属性后,就要用实例来分析在验证某些数据的时候该怎么样编写验证因子。
如果学习过ThinkPHP的同学们应该在手册中看到过一些关于自动验证的例子,在这里我们将把大多数常用的例子都总结在这里,方便大家来学习和使用,如果有一些同学们常用但是这里没有提到的大家可以集思广益,来完善所有的自动验证数据的方法,这里将不断更新。
实例:
protected $_validate = array(
array('username','require','用户名必须!'), // 数据是否为空 注:默认增加修改都验证
array('username','','用户名已经存在!',0,’unique’,1), // 在新增的时候验证username字段是否唯一
array('password','checkPwd','密码格式不正确',0,’function’), // 密码格式可以用chenkPwd方法自定义
array('repassword','password','确认密码不正确',0,’confirm’), // 验证确认密码是否和密码一致
array('sex','array(0,1,2)','性别必须为0,1,2',0,'in'), // 验证数据是否在一个范围内
array('age','number','年龄必须为数字'), // 验证数据是否为数字
array('email','email','邮箱格式不正确'), // 内置正则验证邮箱
array('email','/^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/','邮箱格式不正确), // 自定义正则验证数据
array('mypage','url','个人网址格式不正确'), // 内置正则验证URL地址
array('verify','****','验证码不正确',0,'equal'), // 验证数据是否等于某个值 注:****可以是随机验证码
array('salary','currency','薪水验证不正确','0'), // 内置验证货币数据
);
ThinkPHP的自动验证功能几乎可以满足任何数据验证的需求,所以大家在用ThinkPHP做项目中的数据添加并验证的时候,利用自动验证和自动完成功能就不用担心数据的验证这个麻烦的问题了。自动完成功能下次讲解和总结,并且还会陆续发布ThinkPHP的项目模块制作和项目实例,希望大家支持。
分享到:
相关推荐
`ThinkPHP框架项目开发专题汇编`深入探讨了如何利用框架内置的自动验证功能进行高效的数据验证。 在Web项目开发中,如用户注册、新闻发布、商品管理等场景,都需要处理数据添加操作,此时表单数据验证显得尤为重要...
- **手册目的与定位**:作为ThinkPHP3.2.3版本的官方文档,本手册旨在为开发者提供全面、系统的开发指南,帮助他们更好地理解和使用该框架。 #### 基础 - **获取ThinkPHP**: - **下载地址**:ThinkPHP3.2.3可通过...
- **自动验证**:支持数据自动验证,确保数据的有效性。 - **自动完成**:支持数据自动填充。 - **参数绑定**:支持参数绑定,提高安全性。 - **虚拟模型**:支持虚拟模型的概念。 - **模型分层**:支持模型分层,...
本文将详细介绍如何安装thinkPHP5.0框架,包括安装环境的要求、常见的安装方法以及一些注意事项,帮助开发者顺利搭建开发环境。 首先,thinkPHP5.0框架对PHP环境有一定的要求,至少需要PHP 5.4.0及以上版本。此外,...
更多关于ThinkPHP框架的知识和技巧,如ThinkPHP入门教程、模板操作、常用方法总结等,可以在相关专题中找到深入的介绍和示例。这些资料将帮助开发者更好地掌握ThinkPHP框架的使用,提升开发效率和代码质量。
- **自动验证**: 对数据进行自动验证。 - **自动完成**: 自动填充某些字段。 - **参数绑定**: 绑定请求参数到模型属性。 - **虚拟模型**: 临时模型用于复杂的数据处理。 - **模型分层**: 模型的层次结构。 - **视图...
此外,对于想要扩展自己的知识库的人来说,网站提供的《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》等专题也是不错的选择,他们可以进一步深化对ThinkPHP框架的理解,并掌握更多高级技巧。
本站也提供了多个专题教程,如《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《PHP中cookie用法总结》等,这些资源为开发人员提供了系统的知识体系,有助于他们深入了解和掌握ThinkPHP框架的使用。 在实际开发...
除了CodeIgniter框架的邮件发送类,文章还提到了其他一些相关的PHP框架和开发技巧,例如ThinkPHP和Zend Framework,它们都是当前流行的PHP开发框架。对于初学者和已经具有一定基础的开发者来说,掌握这些框架的使用...
响应式精致花束鲜花礼品网站模板是基于ThinkPHP5框架构建的企业网站建站模板,它专为鲜花礼品行业设计,提供了强大的后台管理系统,方便用户进行网站内容的管理和更新。这个模板充分利用了HTML5和CSS3的新特性,确保...
迅睿CMS框架采用最新CodeIgniter4框架,拥有完善的二次开发文档,并且遵循框架原生编程风格,非常方便二次开发;CodeIgniter 安装包中包含《用户手册》,手册囊括了入门介绍、教程、“手把手”指导,还包括了框架...