一:自动验证
自动验证的定义是这样的:array(field,rule,message,condition,type,when,params)
field:代表是 数据库的字段名;
rule:代表是规则;
它的值要看type的类型而定;
如果是 condition 是function(callback),rule是一个 函数名
condition 是in,rule是一个数组
message:代表是消息提示;
condition:代表是验证条件
它的值:
self::MUST_VALIDATE 表示必须验证
self::VALUE_VAILIDATE 表示不为空的时候验证
self::EXISTS_VAILIDATE 表示 表单存在的字段验证(默认)
type:代表验证类型
它的值:
function(callback) 表示验证的是调用一个Model中的函数
confirm 表示验证两个字段是否相同
in 是否在某个数组范围之内
equal 验证是否等于某个值
unique 验证某个值是否唯一
regex 使用正则表达式(默认)
when:代表是是否需要执行验证
它的值:
self::INSERT_STATUS add操作的时候验证
self::UPDATE_STATUS update操作的时候验证
self::ALL_STATUS (不用说了吧)
params:参数(具体什么我现在还不太清楚)
看看例子:
简单一点有一张表,id,name(varchar),cDate(Datetime)
要求name不能为空且不能重复(id为自动类型)
protected $_validate = array(
array("name","require","名称必须"),
array("name","checkData","该名称已经存在",self::MUST_VALIDATE,"callback",self::ALL_STATUS),
);
protected function checkData(){
if(isset($_POST["id"])){ /**** update时验证 ****/
$condition["id"] = array("neq",$_POST["id"]);
$condition["name"] = $_POST["name"];
$list = $this -> where($condition) -> find();
if(!$list){
return true;
}else{
return false;
}
}else{ /**** add时验证 ****/
$condition["name"] = $_POST["name"];
$list = $this -> where($condition) -> find();
if(!$list){
return true;
}else{
return false;
}
}
}
第一个表示名称必须的,无论在add或update的时候
第二个表示在无论在add或update的时候不能重复,使用一个回调函数checkData,
说明:
不要想当然的type =unique,在add的时候没问题,但在update的时候是不能用的,无效的(流年说的)
其他的我没仔细琢磨,自己试试看吧
二:自动 填充
自动填充与手册也是不相符的,它的定义是array('field','填充内容','填充条件','附加规则',[额外参数])
field:(不用说了)
填充内容:
根据 附加规则值不同设定不同
function(callback) =》 函数名
填充条件:
它的值:
self::MODEL_INSERT add操作的时候填充
self::MODEL_UPDATE udate操作的时候填充
self::MODEL_BOTH (不用说了)
附加规则
它的值:
function(callback) 使用函数,
field 用其它字段的值进行填充
string 默认作为字符串填充
额外参数
按照上边的表对cDate字段在add,update的时候进行自动填充
protected $_auto = array(
array("cDate","MYDate",self::MODEL_BOTH,"callback"),
);
protected functionMYDate(){
return date("Y-m-d H:i:s");
}
就这么简单
注意事项: 无论用自动验证环视自动填充,在使用add,save前必须使用create(创建 数据对象才能使用)
自动验证的定义是这样的:array(field,rule,message,condition,type,when,params)
field:代表是 数据库的字段名;
rule:代表是规则;
它的值要看type的类型而定;
如果是 condition 是function(callback),rule是一个 函数名
condition 是in,rule是一个数组
message:代表是消息提示;
condition:代表是验证条件
它的值:
self::MUST_VALIDATE 表示必须验证
self::VALUE_VAILIDATE 表示不为空的时候验证
self::EXISTS_VAILIDATE 表示 表单存在的字段验证(默认)
type:代表验证类型
它的值:
function(callback) 表示验证的是调用一个Model中的函数
confirm 表示验证两个字段是否相同
in 是否在某个数组范围之内
equal 验证是否等于某个值
unique 验证某个值是否唯一
regex 使用正则表达式(默认)
when:代表是是否需要执行验证
它的值:
self::INSERT_STATUS add操作的时候验证
self::UPDATE_STATUS update操作的时候验证
self::ALL_STATUS (不用说了吧)
params:参数(具体什么我现在还不太清楚)
看看例子:
简单一点有一张表,id,name(varchar),cDate(Datetime)
要求name不能为空且不能重复(id为自动类型)
protected $_validate = array(
array("name","require","名称必须"),
array("name","checkData","该名称已经存在",self::MUST_VALIDATE,"callback",self::ALL_STATUS),
);
protected function checkData(){
if(isset($_POST["id"])){ /**** update时验证 ****/
$condition["id"] = array("neq",$_POST["id"]);
$condition["name"] = $_POST["name"];
$list = $this -> where($condition) -> find();
if(!$list){
return true;
}else{
return false;
}
}else{ /**** add时验证 ****/
$condition["name"] = $_POST["name"];
$list = $this -> where($condition) -> find();
if(!$list){
return true;
}else{
return false;
}
}
}
第一个表示名称必须的,无论在add或update的时候
第二个表示在无论在add或update的时候不能重复,使用一个回调函数checkData,
说明:
不要想当然的type =unique,在add的时候没问题,但在update的时候是不能用的,无效的(流年说的)
其他的我没仔细琢磨,自己试试看吧
二:自动 填充
自动填充与手册也是不相符的,它的定义是array('field','填充内容','填充条件','附加规则',[额外参数])
field:(不用说了)
填充内容:
根据 附加规则值不同设定不同
function(callback) =》 函数名
填充条件:
它的值:
self::MODEL_INSERT add操作的时候填充
self::MODEL_UPDATE udate操作的时候填充
self::MODEL_BOTH (不用说了)
附加规则
它的值:
function(callback) 使用函数,
field 用其它字段的值进行填充
string 默认作为字符串填充
额外参数
按照上边的表对cDate字段在add,update的时候进行自动填充
protected $_auto = array(
array("cDate","MYDate",self::MODEL_BOTH,"callback"),
);
protected functionMYDate(){
return date("Y-m-d H:i:s");
}
就这么简单
注意事项: 无论用自动验证环视自动填充,在使用add,save前必须使用create(创建 数据对象才能使用)