yii表单验证

来源:互联网 发布:医疗数据采集平台 编辑:程序博客网 时间:2024/05/02 00:27

yii表单验证

 

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(

'id'=>'auth-form',

'enableAjaxValidation'=>true,

'enableClientValidation'=>true,

'clientOptions' => array(

'validateOnSubmit' => true, //需要ajax验证为真,否则为假

),

    'focus'=>array($model,'username'),

'action'=>'authoriza2/login',

)); ?> 

<?php $this->endWidget(); ?>

</div><!-- form -->



 自定义验证规则

关键有一下两个步骤:
        1、在rules中 添加代码:array('tagname', 'checktagname', 'on'=>'create,update'),//插入TAG时检查是否已经存在该tag
        注:我在其中用了 'on'=>'create,update',所以这个验证规则之对create,update场景生效
        2、在该模型(models)中添加验证函数:
public function checktagname($attribute,$params){
        $oldtag = Tag::model()->findByAttributes(array('tagname'=>$this->tagname));
        if($oldtag->tagid > 0){
             $this->addError($attribute, '该TAG已经存在!');
       }
}


  其中需要说明的是:
        (1)该验证函数的参数必须是($attribute,$params),不能缺少其中任何一个;       (2)$this->addError($attribute, '该TAG已经存在!');这个是你想要在视图中输出的错误提示信息。
        就是这么简单,有了这个方法,表单验证的各种想要的规则就都可以自定义了。

内置验证规则

Yii 有内置数据验证,我将它列出来:

 

required: 必填字段验证, 来自 CRequiredValidator类的别名

 

array(‘字段名列表用逗号隔开’, ‘required’),    就这样的一个小小的写法,可以让字段前面加个 * 星号显示出来,表示必填字段

filter: 过滤验证, 来自 CFilterValidator 类的别名

match: 使用正则表达式,来自CRegularExpressionValidator的别名, 用于 验证属性是否匹配一个正则表达式

email: 验证邮箱,来自CEmailValidator类的别名

url: 验证网址, 来自CUrlValidator的别名

unique: 验证唯一性, 来自CUniqueValidator的别名

compare: 多字段对比验证,来自CCompareValidator的别名

length: 验证字符串的长度验证,来自CStringValidator的别名

in: 验证属性值是否在一个预订的值列表里面,来自CRangeValidator的别名

numerical: 验证字符串是否为整数,来自CNumberValidator的别名

captcha: 验证码啦,来自CCaptchaValidator的别名

type: 验证字符串类型,来自 CTypeValidator的别名

file: 文件验证,来自CFileValidator的别名

default: 默认值验证, 来自CDefaultValueValidator的别名

exist: 验证数据是否存在, 来自CExistValidator的别名

boolean: 验证真假值, 来自CBooleanValidator的别名

date: 验证日期时间, 来自CDateValidator的别名

safe:验证数据是否安全,来自 CSafeValidator的别名

unsafe: 不验证,来自CUnsafeValidator的别名

原创粉丝点击