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 { |
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔