[MixMVC]MixMVC3.1 Validator

在MixMVC中,DBO集合中提供一个非常便利的数据验证模块,MST_DBO_Validator该类已经集成到DBO中,我们也可以独立调用,在最近完成的安装程序中就有独立调用MST_DBO_Validator的例子。

 

为什么要有数据验证模块?

我们在开发中,所以提交表单(form)最常见的逻辑处理就是数据验证,例如一些字段是必填的,一些字段是数字等,很多时候我们都要重复写这些验证代码。所以很多框架中都会实现一个通用的数据验证模板。当然MixMVC也用这个功能。

 

数据验证的基本规则

MST_DBO_Validator中定义了一些规则,用于一些基本的验证处理。其他再特殊一点的验证处理请使用DBObeforeValidate回调自己实现。

具体规则如下:

$columns = array(
    'username' => array(
        'require' => 1, //该字段必填
        'isNumber' => 1, //该字段是数字
        'isFloat' => 1, //该字段是浮点数
        'numMax' => 100, //该字段允许的最大值
        'numMin' => 1, //该字段允许的最小值
        'max' => 10, //该字段允许最大字符长度,跟项目的编码计算字符长度
        'min' => 2, //该字段允许最小字符长度,跟项目的编码计算字符长度
        'only' => array('Admin_User', 'username'), //唯一验证,格式array(Model类名,唯一的字段)
        'format' => '/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i', //字段内容的则正匹配,一般用于Email验证,这里就是一个验证email格式的例子
        'sample' => 'Correct format: user@anyhost.com', //实例说明一般与format搭配使用,用于自定义格式错误的提示
        'isHtml' => 1, //默认的所有的字符字段都会作HTMLencode处理,只有定义了此规则才会保存原来的字符
        'trim' => ' ', //字符处理,去掉两边的特定字符,这里是去掉两边的空格
        'ltrim' => ' ',//字符处理,去掉左的特定字符,这里是去掉左边的空格
        'rtrim' => ' ',//字符处理,去掉右边的特定字符,这里是去掉右边的空格
    ),
);

使用例子

        //输入数据
        $input = array(
            'username' => 'Sam',
            'email' => 'sam@mixmedia.com',
            'age' => 18
        );

        //定义字段验证规则
        $columns = array(
            //定义username字段,描述:姓名,规则:必填
            'username' => array('text', 'title' => '姓名', 'require' => 1),
            //定义email字段,描述:邮件地址,规则:必填,
            //正则验证邮件格式,格式错误提示:'正确的格式应该是: user@anyhost.com'
            'email' => array('text', 'title' => '邮件地址', 'require' => 1,
                'format' => '/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/i',
                'sample' => '正确的格式应该是: user@anyhost.com'
            ),
            //定义username字段,描述:年龄,规则:必填,数字字段,最小值18
            'age' => array('text', 'title' => '年龄', 'require' => 1,
                'isNumber' => 1,
                'numMin' => 18,
            ),
        );

        //使用已经定义好的验证规则创建验证模块
        $validator = new MST_DBO_Validator($columns);
        //用validate方法验证输入数据
        $validator->validate($input);

        //判断验证是否通过
        if ($validator->hasError()) {
            //如果有错误,返回相关的错误信息,key => error形式与字段一一对应
            return $validator->getErrors();
        }

 

 

文章分类 MixMVC, 经验分享
One comment on “[MixMVC]MixMVC3.1 Validator
  1. Ken AU说道:

    睇完此份*花宝典系列后,获益良多,对大师的敬仰始终都系滔滔江水连绵不绝,期待更多更power的文献!

发表评论


Warning: Use of undefined constant XML - assumed 'XML' (this will throw an Error in a future version of PHP) in /var/www/wp/code/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048