#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