#1 jake
在数据验证的时候,我们有时会遇到动态增加验证规则的情况,实现起来也是非常的简单。
模型类中的成员变量$verifier,其实和普通的数组是一样的。所以动态增加验证规则,我们可以直接通过对$verifier赋值来实现。
如在上例中的lib_user的$verifier是这样的。
class lib_user extends spModel
{
var $pk = "uid";
var $table = "user"; // 数据表的名称
var $verifier = array( // 验证登录信息
"rules" => array( // 规则
'uname' => array( // 这里是对uname的验证规则
'notnull' => TRUE, // uname不能为空
'minlength' => 3, // uname长度不能小于3
'maxlength' => 12 // uname长度不能大于12
),
),
"messages" => array( // 提示信息
'uname' => array(
'notnull' => "用户名不能为空",
'minlength' => "用户名不能少于3个字符",
'maxlength' => "用户名不能大于20个字符"
),
)
);
在使用的时候,我们希望能加入一个“对邮箱地址”的验证,那么在控制器中,我们就可以对$verifier进行赋值。
$userObj = spClass("lib_user"); // 实例化lib_user类
$userObj->verifier['rules']['email'] = array( // 增加email的验证规则
'notnull' => TRUE,
'email' => TRUE,
'minlength' => 8,
'maxlength' => 20,
);
$userObj->verifier['messages']['email'] = array( // 增加email的验证提示
'notnull' => 'email不能为空',
'email' => '必须要是电子邮件格式',
'minlength' => 'email长度不能小于8',
'maxlength' => 'email长度不能大于20',
);
$results = $userObj->spVerifier($this->spArgs());
通过对$verifier数组的改变,就可以动态增加验证规则了。
当然,这是临时加入的验证规则,如果不是临时的,那么就可以直接写到$verifier上面。
$verifier的修改可以变更spVerifier的验证,同理,$linker的修改也可以变更spLinker的关联。
2012-08-04 16:50:46