ThinkPHP:模型自动验证和处…

xiaoxiao2021-02-28  119

感觉这个模型,加验证规则,在控制器控制字段是否能进行操作,这个模式很好用啊 原文地址:ThinkPHP:模型自动验证和处理 作者:beartan11_r0qei

ThinkPHP:模型自动验证和处理

模型 数据 验证 系统内置了数据对象的 自动验证 功能,而大多数情况下面,数据对象是由 表单提交的$_POST数据创建。 需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的数组,支持的验证因子格式: array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间) 复制代码 验证字段就是定义需要验证的表单字段,这个字段不一定是 数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。 验证规则 要进行验证的规则,需要结合附加规则 提示信息 用于验证失败后的提示信息定义 验证因子中上面三个参数必须定义,下面为可选参数。 验证条件 EXISTS_TO_VAILIDATE 或者0 存在字段就验证 (默认) MUST_TO_VALIDATE 或者1 必须验证 VALUE_TO_VAILIDATE或者2 值不为空的时候验证 附加规则 配合验证规则使用,包括: function 使用 函数验证,前面定义的验证规则是一个函数名 callback 使用方法验证,前面定义的验证规则是一个当前Model类的方法 confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名 equal 验证是否等于某个值,该值由前面的验证规则定义 in 验证是否在某个范围内,前面定义的验证规则必须是一个数组 unique 验证是否唯一,系统会根据字段目前的值 查询数据库来 判断是否存在相同的值 regex 使用 正则进行验证,表示前面定义的验证规则是一个正则表达式(默认) 如果采用正则进行验证,会调用系统内置的验证类进行验证操作,该验证类位于ORG.Text.Validation,通过正则的方式对数据进行验证,并定义了一些常用的验证规则。包括: require 字段必须 email 邮箱 url URL地址 currency 货币 number 数字 这些验证规则可以直接使用。 验证时间: all 全部情况下验证(默认) add 新增数据时候验证 edit 编辑数据时候验证 示例: var $_validate         =         array(array('verify','require','验证码必须!'), //所有情况下用正则进行验证array(name,'','帐号名称已经存在!',0,’unique’,’add’), // 在新增的时候验证name字段是否唯一array('value',array(1,2,3),'值的范围不正确!',2,’in’), // 当值不为空的时候判断是否在一个范围内array('repassword','password','确认密码不正确',0,’confirm’), // 验证确认密码是否和密码一致array('password','checkPwd','密码格式不正确',0,’function’), // 自定义函数验证密码格式); 复制代码 当使用系统的create方法创建数据对象的时候会自动进行数据验证操作,代码示例: $User = D(“User”);$vo = $User->create();if (!$vo){// 如果创建失败 表示验证没有通过 输出错误提示信息$this->error($User->getError());} 复制代码 数据处理 在Model类定义 $_auto 属性,可以完成数据自动处理功能,用来处理默认值和其他系统写入字段。 $_auto属性是由多个填充因子组成的数组,填充因子定义格式: array(填充字段,填充内容,填充条件,附加规则) 复制代码 填充字段就是需要进行处理的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。 填充条件包括: ADD 新增数据的时候处理(默认方式) UPDATE 更新数据的时候处理 ALL 所有情况下都进行处理 附加规则包括: function 使用函数 callback 回调方法 field 用其它字段填充 string 字符串(默认方式) 示例: var $_auto = array ( array('status','1','ADD'),  // 默认把status字段设置为1array('password','md5','ADD','function') // 对password字段在新增的时候使用md5函数处理array('name','getName','ADD','callback') // 对name字段在新增的时候回调getName方法array('mTime','time','UPDATE',’function’), // 对mTime字段在编辑的时候写入当前时间戳);
转载请注明原文地址: https://www.6miu.com/read-34776.html

最新回复(0)