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 { |