ThinkPHP自动验证
ThinkPHP内置了数据对象的自动验证功能来进行模型的业务规则验证。大多数情况下,数据是由表单提交的$_POST数据创建。则使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,它是由多个验证因子组成到得二维数组。
验证因子格式:
代码如下 | 复制代码 |
protected $_validate = array( |
实例(以注册时验证注册信息):
代码如下 | 复制代码 |
class RegisterUser extends Model{ |
当使用create方法创建数据对象时会自动进行数据验证(当POST提交表单处理时):
代码如下 | 复制代码 |
$Register = D("RegisterUser"); |
通常,数据的验证规则都是相对固定,但有些特殊情况下需要使用其他验证条件,这时我们就需要动态的改变验证规则来满足不同条件。
方法是在模块中使用create方法之前使用setProperty方法,如下(还是以上面注册实例):
代码如下 | 复制代码 |
$Register = D("RegisterUser"); |
批量验证
新版支持数据的批量验证功能,只要在模型类里面设置patchValidate属性为true(默认为false),设置批处理验证后,getError()方法返回的错误信息是一个数组,返回格式是:
代码如下 | 复制代码 |
array("字段名1"=>"错误提示1","字段名2"=>"错误提示2"...) |
thinkphp自动验证无效的问题
Action方法: IndexAction下的adds方法,D(“Liuyan”)获取post提交过来的内容,create()方法创建数据对象,D方法创建了数据对象才可以自动调用验证。
代码如下 | 复制代码 |
public function adds(){ $ly=D("liuyan"); $result=$ly->create(); if($result){ echo 'success'; $ly->add(); } else{ exit($ly->getError()); } } |
Model方法:
自动验证功能,加上$_validate属性,以数组的形式定义验证规则。
代码如下 | 复制代码 |
class LiuyanModel extends Model{ |
这样写的问题是,新增数据没有问题,但是不能自动调用验证功能,ThinkPHP的验证功能失效了。弄了半天,才知道,原因在于D(“Liuyan”)这样写才是对的,首字母大写
自动验证失败及解决方法
Action 事件
代码如下 | 复制代码 |
/* |
Model
代码如下 | 复制代码 |
class LoginModel extends Model { |
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级