YII中表单验证
关于表单的验证有三种:
1、yii的客户端验证
2、yii的服务器端验证
3、yii的ajax验证
例如:
1、在表单对应的模型中定义一个rules方法(该方添加后,在表单提交时,将自动被调用)
public function rules()
{
return array(
array("表单元素名也就是字段名","验证类","message"=>"提示信息"),
array("表单元素名也就是字段名","验证类","message"=>"提示信息"),
array("表单元素名也就是字段名","验证类","message"=>"提示信息")
);
}
2、视图页面的表单中需添加如下属性
<?php
$form = $this->beginWidget("CActiveForm",array(
"action"=>"index.php?r=user/reg",
"method"=>"post",
"enableClientValidation"=>true,//是否使用客户端验证
"clientOptions" => array(//客户端验证选择
'validateOnSubmit' => true,//是否在表单提交时进行验证
),
"htmlOptions"=>array(
"name"=>"frm",
"enctype"=>"multipart/form-data"
)
));
?>
3、视图页面显示错误信息
<?php echo $form->error(模型对象,"表单元素名也就是字段名") ?>
下面是对应的验证类
required: CRequiredValidator
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
1、CRequiredValidator – 必须值验证属性
requiredValue-mixed-所需的值
strict-boolean-是否比较严格
实例: array(‘username’, ‘required’), 不能为空
array(‘username’, ‘required’, ‘requiredValue’=>’lh’,'message’=> ‘usernmae must be lh’), 这个值必须为lh,如果填其他值还是会验证不过
array(‘username’, ‘required’, ‘requiredValue’=>’lh’, ‘strict’=>true), 严格验证 还可以在后面加 ‘message’=>”,’on’=>这些
2、CFilterValidator 过滤验证属性
filter – 方法名 (调用用户自己定义的函数)
实例:
array(‘username’, ‘test’) function test() { $username = $this->username; if($username != ‘lh’){ $this->addError(‘username’, ‘username must be lh’); } }
使用这个方法如果你还在array里面写message=>”,给出的提示信息还是你的test里面的。也就是以test里面的错误信息为准
3、CRegularExpressionValidator -
正则验证属性allowEmpty – 是否为空(默认true)
not-是否反转的验证逻辑(默认false) pattern – 正则表达式匹配实例:
// 匹配a-z array(‘username’, ‘match’, ‘allowEmpty’=>true, ‘pattern’=>’/[a-z]/i’,'message’=>’必须为字母’),
// 匹配不是a-z array(‘username’, ‘match’, ‘allowEmpty’=>true, ‘not’=>true, ‘pattern’=>’/[a-z]/i’,'message’=>’必须不是字母’),
4、CEmailValidator –邮箱验证属性:
allowEmpty – 是否为空
allowName – 是否允许在电子邮件地址的名称
checkMx – 是否检查电子邮件地址的MX记录
checkPort – 是否要检查端口25的电子邮件地址
fullPattern – 正则表达式,用来验证电子邮件地址与名称的一部分
pattern – 正则表达式,
用来验证的属性值实例: array(‘username’, ‘email’, ‘message’=>’必须为电子邮箱’, ‘pattern’=>’/[a-z]/i’),
5、CUrlValidator – url验证属性:
allowEmpty – 是否为空
defaultScheme – 默认的URI方案
pattern – 正则表达式
validSchemes – 清单应视为有效的URI计划。
实例:
array(‘username’, ‘url’, ‘message’=>’must url’),
array(‘username’, ‘url’, ‘defaultScheme’=>’http://www.baidu.com’),
6、CUniqueValidator – 唯一性验证属性:
allowEmpty – 是否为空
attributeName – 属性名称
caseSensitive – 区分大小写
className – 类名
criteria – 额外的查询条件
实例:
array(‘username’, ‘unique’, ‘message’=>’该记录存在’),
array(‘username’, ‘unique’, ‘caseSensitive’=>false, ‘message’=>’该记录存在’),
7、CCompareValidator – 比较验证属性:
allowEmpty – 是否为空
compareAttribute – 需要比较的属性
compareValue -比较的值
operator – 比较运算符
strict – 严格验证(值和类型都要相等)
实例: // 与某个值比较 array(‘username’, ‘compare’, ‘compareValue’=>’10′, ‘operator’=>’>’, ‘message’=>’必须大于10′),
// 与某个提交的属性比较 array(‘username’, ‘compare’, ‘compareAttribute’=>’password’, ‘operator’=>’>’, ‘message’=>’必须大于password’),
8、CStringValidator – 字符串验证属性:
allowEmpty – 是否为空
encoding – 编码
is – 确切的长度
max – 最大长度
min – 最小长度
tooLong – 定义值太大的错误
tooShort – 定义最小长度的错误
实例: array(‘username’, ‘length’, ‘max’=>10, ‘min’=>5, ‘tooLong’=>’太长了’, ‘tooShort’=>’太短了’),
array(‘username’, ‘length’, ‘is’=>5, ‘message’=>’长度必须为5′),
9、CRangeValidator – 在某个范围内属性:
allowEmpty – 是否为空
not – 是否反转的验证逻辑。
range – array范围
strict – 严格验证(类型和值都要一样)
实例: array(‘username’, ‘in’, ‘range’=>array(1,2,3,4,5), ‘message’=>’must in 1 2 3 4 5′),
array(‘username’, ‘in’, ‘not’=>true, ‘range’=>array(1,2,3,4,5), ‘message’=>’must not in 1 2 3 4 5′),
10、CNumberValidator – 数字验证属性:
allowEmpty – 是否为空
integerOnly – 整数
integerPattern – 正则表达式匹配整数
max – 最大值
min – 最小值
numberPattern – 匹配号码
tooBig – 值太大时的错误提示
tooSmall – 值太小时的错误提示
实例: array(‘username’, ‘numerical’, ‘integerOnly’=>true, ‘message’=>’must be int’),
array(‘username’, ‘numerical’, ‘integerOnly’=>true, ‘message’=>’must be int’, ‘max’=>100, ‘min’=>10, ‘tooBig’=>’is too big’, ‘tooSmall’=>’is too small’),
11、CCaptchaValidator – 验证码验证属性:
allowEmpty – 是否为空
caseSensitive – 区分大小写
12、CTypeValidator – 类型验证属性:
allowEmpty – 是否为空
dateFormat – 日期应遵循的格式模式(‘MM/dd/yyyy’)
datetimeFormat – 日期时间应遵循的格式模式(‘MM/dd/yyyy hh:mm’)
timeFormat – 时间应遵循的格式模式(‘hh:mm’)
type – 类型 ‘string’, ‘integer’, ‘float’, ‘array’, ‘date’, ‘time’ and ‘datetime’
实例: array(‘username’, ‘type’, ‘dateFormat’=>’MM/dd/yyyy’, ‘type’=>’date’),
13、CFileValidator – 文件验证属性:
allowEmpty – 是否为空
maxFiles – 最大文件数
maxSize – 文件的最大值
minSize – 最小值
tooLarge – 太大时的错误信息
tooMany – 太多时的错误信息
tooSmall – 太小时的错误信息
types – 允许的文件扩展名
wrongType – 扩展名错误时给出的错误信息
14、CDefaultValueValidator – 默认值属性:
setOnEmpty – 设置为空
value – 默认值
实例: array(‘username’, ‘default’, ‘setOnEmpty’=>true, ‘value’=>’lh’),
15、CExistValidator – 是否存在属性:
allowEmpty = 是否为空
attributeName – 属性名称
className – 类名
criteria – 标准
16、CBooleanValidator – 布尔类型验证属性:
allowEmpty – 是否为空
falseValue – 错误状态的值
strict – 严格验证
trueValue – 真实状态的值
实例: array(‘username’, ‘boolean’, ‘trueValue’=>1, ‘falseValue’=>-1, ‘message’=>’the value must be 1 or -1′),
17、CDateValidator – 日期验证属性:
allowEmpty – 是否为空
format – 日期值应遵循的格式模式
timestampAttribute – 接收解析结果的属性名称
实例: array(‘username’, ‘date’, ‘format’=>’MM-dd-yyyy’,'message’=>’must be MM-dd-yyyy’),
YII中表单验证的更多相关文章
- HTML5中表单验证的8种方法(转)
在深人探讨表单验证之前,让我们先思考一下表单验证的真实含义.就其核心而言,表单验证是一套系统,它为终端用户检测无效的控件数据并标记这些错误.换言之,表单验证就是在表单提交服务器前对其进行一系列的检查并 ...
- HTML5中表单验证的8种方法
HTML5中表单验证的8种方法 2012-4-21 11:00| 发布者: benben| 查看: 2765| 评论: 0 摘要: 前一篇,我们介绍了HTML5中新的表单特性和函数, 今天就继续来谈谈 ...
- Yii 表单验证规则---总结
Filter: 过滤,'filter'=>'trim',表示去空格 Required:必须的,表示不能为空 Match: 匹配正则,需要和pattern一起使用,定义正则表达式,'pattern ...
- miniui中表单验证规则总结
页面链接: http://www.miniui.com/demo/#src=form/rules.html 页面效果图: 页面代码: <!DOCTYPE html PUBLIC "-/ ...
- spring boot中表单验证的使用
一.前言 为啥子要搞这个表单验证呢?答案简单而现实,举个栗子,你辛辛苦苦的写了一个录入个人信息的功能,比如年龄这个位置,用户就没看到一下子写了个性别男,一提交,直接报错了,是不是很尴尬呢, 作为一个测 ...
- v-show和element中表单验证validate起到的化学反应
说起v-show和v-if,进行前端开发的大家一定不会陌生,他们都是用来控制标签元素的显示与隐藏的,他们的区别就是v-show会把标签渲染出来,只是会隐藏起来,相当于visibility:hidden ...
- vux中表单验证,在提交时自动聚焦到未验证通过的那栏;及循环表单的验证
首先vux中的表单验证在点击触发,失焦时才显示错误信息,如果不管它,它就没反应,这显然是不合理的:解决办法就是:在提交时做验证,不通过的话就使用.focus()及.blur()方法给它聚焦,失焦. i ...
- YII 表单验证规则
官方文档:http://www.yiichina.com/guide/form.model 类参考手册:http://www.yiichina.com/api/CValidatorhttp://www ...
- Yii表单验证
我之前在朋友的公司拿到他们oa的代码,发现是用Yii写的,oa系统比较简单,但是程序员对Yii的运用比较好,我拿来学习一下.如果有需要,我可以私下分享这个程序,因为是人家的功劳,不在网上公布代码了,只 ...
随机推荐
- my sql 实现批量操作及注意问题
使用in来实现批量操作是个很不错的想法: /*实现查询*/ select * from goods where goodsid in (102,103); /*实现批理删除*/ delete from ...
- spring--资源--4
4.1.1 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源.File资源资源.ClassPath相关资源.服务器相关资源(JBoss AS 5.x上的VFS资源)等等 ...
- DataProvider 传递参数
package roger.testng; import org.testng.annotations.DataProvider; import org.testng.annotations.Test ...
- 自动测试框架(by myself)
这段日子以来一直在自动话测试,然后关于框架一直有个很模糊的概念,通过N多人的解说,这个应该不能算是一个框架,但是还是很模糊 如下图是我自己认为的框架,不知道是否正确(请大侠们多多指点) 1.用nuni ...
- 支持度(support)和置信度(confidence)
支持度(Support)的公式是:Support(A->B)=P(A U B).支持度揭示了A与B同时出现的概率.如果A与B同时出现的概率小,说明A与B的关系不大:如果A与B同时出现的非常频 ...
- Java 并发之线程安全
写线程安全的代码,说白了就是管理一个类的共享的.可变的状态.只要有多于 1 个线程对类的状态进行写入,那么就必须用同步来协调这多个线程对状态的访问.对于一个没有状态的类来说(简单的理解就是只有方法没有 ...
- DIV遮罩层传值
今天费了很大的劲儿才搞定!下面贴出代码和总结: 1.首先是前台代码: <%@ Page Title="" Language="C#" MasterPage ...
- boj1267 Infinite’s Cave 树形dp + 背包
题目链接:http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=1267 / ...
- poj 1438--One-way Traffic(边的双连通)
给定一个图,并给定边,a b c(c==1||c==2) 表示ab之间有c条边 求把尽可能多的有向边定向变成强联通图. 先把图当做无向图,加边时记录是否有边,dfs的时候不要把本没有的边用到!因为这个 ...
- poj 2367 Genealogical tree (拓扑排序)
火星人的血缘关系很奇怪,一个人可以有很多父亲,当然一个人也可以有很多孩子.有些时候分不清辈分会产生一些尴尬.所以写个程序来让n个人排序,长辈排在晚辈前面. 输入:N 代表n个人 1~n 接下来n行 第 ...