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已经存在!');
}
}
内置验证规则
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的别名