在MixMVC中,DBO集合中提供一个非常便利的数据验证模块,MST_DBO_Validator该类已经集成到DBO中,我们也可以独立调用,在最近完成的安装程序中就有独立调用MST_DBO_Validator的例子。
为什么要有数据验证模块?
我们在开发中,所以提交表单(form)最常见的逻辑处理就是数据验证,例如一些字段是必填的,一些字段是数字等,很多时候我们都要重复写这些验证代码。所以很多框架中都会实现一个通用的数据验证模板。当然MixMVC也用这个功能。
数据验证的基本规则
MST_DBO_Validator中定义了一些规则,用于一些基本的验证处理。其他再特殊一点的验证处理请使用DBO中beforeValidate回调自己实现。
具体规则如下:
$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(); }
睇完此份*花宝典系列后,获益良多,对大师的敬仰始终都系滔滔江水连绵不绝,期待更多更power的文献!