YII框架数据验证规则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表单验证错误处理
你会发现在方法中我们使用了 CModel::addError().添加错误接受两个参数:
第一个参数是在表单中显示错误的属性名,第二个参数时显示的错误信息 。用
户提交表单时,可能除表单验证之外还有与表单各输入项无关的其他错误产生,
例如后台数据库出错、接口调用失败等。这种情况下可以在Model 中相应的位
置使用如下代码记录错误:
1 $this->addError('info', '发送不明错误,请重试'); // info 只是一个自定义的名字,不需要真正有这个字段或属性。
然后在视图文件中这样输出错误:
1 echo $form->error($model, 'info'); //$form 是 CActiveForm 的实例。$form->getErrors();
当我们调用 CModel::validate() 方法, 我们可以指定一个场景参数. 只有在特定
的场景下校验规则才会生效.校验规则会在那些 on 选项没有被设置或者包含了
指定的场景名称的场景中生效.如果我们没有指定场景,而调用
了 CModel::validate() 方法,只有那些 on 选项没有设置的规则才会被执行 .
1 2 3 $model = new model('register');
// or $model=new User;
// $model->scenario='register';
例如,在注册一个用户时,我们运行以下脚本来执行校验 :
1 array('password', 'compare', 'compareAttribute'=>'repassword', 'on'=>'register,edi t'),
Email 验证器:
1 array('email','email'), //验证email 这个字段必须符合email 格式
Compare 验证器:
1 2 array('password2','compare','compareAttribute'=>'password1'),//验证
password1和password2必须一致 array('end_date','compare', 'compareAttribute' => 'start_date', 'op erator' => '>', 'message' => '错误的开始结束日期'),
Unique 验证器:
1 array('username,email','unique','className'=>'User'),//User 为Model,username,email 在user 中不允许重复 如果被验证属性为空,就认为完全合法,立刻返回,但是如果allowEmpty 为false
的话,就要通过函数后续的所有验证条件 。那么对于一个传入的空值来说,
allowEmpty 无论是true 还是false ,极有可能都不会报错,上面节选的验证器是
StringValidator ,如果我没有设定min 的值,那么一个空串在allowEmpty 为false
的情况下,还是不会报任何错误的。如果希望一个属性值不能为空,最好还是用
RequiredValidator 来验证,allowEmpty 是不靠谱的,建议一般就采取allowEmpty
的默认值true ,可以节省几次判断。
1 a rray('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
布尔验证器:
1 array('rememberMe', 'boolean'),
数字验证器:
1 array('id', 'numerical', 'min'=>1, 'max'=>10, 'integerOnly'=>true),
fiter 验证器:
1 array('moduleID', 'filter', 'filter'=>'trim'),
正则验证器:
1 array('name','match','pattern'=>'/^[a-z0-9\-_]+$/'),
in 验证器:
1 array('superuser', 'in', 'range' => array(0, 1)),
length 验证器:
1 array('password','length','min'=>'6','max'=>'16','message'=>'{attribute}
长度必须在{min}到{max}之间'),
类型验证 integer,float,string,array,date,time,datetime
1 array('created', 'type', 'datetime'),
日期格式验证:
1 array('created', 'date', 'format'=>'yyyy/MM/dd/ HH:mm:ss'),
文件验证:
1 array('filename', 'file', 'allowEmpty'=>true, 'types'=>'zip, rar, xl s, pdf, ppt'),