首頁 >php教程 >php手册 >Yii CModel中rules验证规则[转],yiicmodel

Yii CModel中rules验证规则[转],yiicmodel

WBOY
WBOY原創
2016-06-13 09:27:181216瀏覽

Yii CModel中rules验证规则[转],yiicmodel

 

<span>array</span><span>(

</span><span>array</span>(&lsquo;username&rsquo;, &lsquo;required&rsquo;),
 <span>array</span>(&lsquo;username&rsquo;, &lsquo;length&rsquo;, &lsquo;<span>min</span>&rsquo;=>3, &lsquo;<span>max</span>&rsquo;=>12),
 <span>array</span>(&lsquo;password&rsquo;, &lsquo;compare&rsquo;, &lsquo;compareAttribute&rsquo;=>&rsquo;password2&prime;, &lsquo;on&rsquo;=>&rsquo;register&rsquo;),
 <span>array</span>(&lsquo;password&rsquo;, &lsquo;authenticate&rsquo;, &lsquo;on&rsquo;=>&rsquo;login&rsquo;),
  <span>array</span>(&lsquo;Price&rsquo;,&rsquo;numerical&rsquo;, &lsquo;integerOnly&rsquo;=><span>true</span>),<span>
);
</span><span>public</span> <span>function</span><span> rules()
{
  </span><span>return</span> <span>array</span><span>(
      </span><span>array</span>(&lsquo;title, content, status&rsquo;, &lsquo;required&rsquo;),
      <span>array</span>(&lsquo;title&rsquo;, &lsquo;length&rsquo;, &lsquo;<span>max</span>&rsquo;=>128),
      <span>array</span>(&lsquo;status&rsquo;, &lsquo;in&rsquo;, &lsquo;<span>range</span>&rsquo;=><span>array</span>(1,2,3)),
      <span>array</span>(&lsquo;tags&rsquo;, &lsquo;match&rsquo;, &lsquo;pattern&rsquo;=>&rsquo;/^[\w\s,]+$/&rsquo;,<span>
          &lsquo;message&rsquo;</span>=>&rsquo;Tags can only contain word characters.&rsquo;),
      <span>array</span>(&lsquo;tags&rsquo;, &lsquo;normalizeTags&rsquo;),
      <span>array</span>(&lsquo;title, status&rsquo;, &lsquo;safe&rsquo;, &lsquo;on&rsquo;=>&rsquo;search&rsquo;),<span>
  );
}</span>

 

预定义完整列表: 
  • boolean : CBooleanValidator 的别名, 确保属性的值是CBooleanValidator::trueValue 或CBooleanValidator::falseValue .

  • captcha : CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来的验证码.

  • compare : CCompareValidator 的别名, 确保了特性的值等于另一个特性或常量.

  • email : CEmailValidator 的别名,确保了特性的值是一个有效的电邮地址.

  • default : CDefaultValueValidator 的别名, 为特性指派了一个默认值.

  • exist : CExistValidator 的别名, 确保属性值存在于指定的数据表字段中.

  • file : CFileValidator 的别名, 确保了特性包含了一个上传文件的名称.

  • filter : CFilterValidator 的别名, 使用一个filter转换属性.

  • in : CRangeValidator 的别名, 确保了特性出现在一个预订的值列表里.

  • length : CStringValidator 的别名, 确保了特性的长度在指定的范围内.

  • match : CRegularExpressionValidator 的别名, 确保了特性匹配一个正则表达式.

  • numerical : CNumberValidator 的别名, 确保了特性是一个有效的数字.

  • required : CRequiredValidator 的别名, 确保了特性不为空.

  • type : CTypeValidator 的别名, 确保了特性为指定的数据类型.

  • unique : CUniqueValidator 的别名, 确保了特性在数据表字段中是唯一的.

  • url : CUrlValidator 的别名, 确保了特性是一个有效的路径 

yii验证rulesit 分类: Yii yii的rules验证 cValidator主要属性 attributes ,builtInValidators,enableClientValidation,message,on,safe,skipOnError

经常用到的属性有 attributes,builtInvalidators,message,on这四个

下面是对应的验证类

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’=& gt;’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 rules 规则 自定义写法

yxmhero1989.blog.163.com/...61864/
 

yii 中的验证码出不来是什问题

本文描述yii验证码的实现,仅仅是笔者应用的一个小例子,网上也有,总结一下,希望帮助到有需要的Yii爱好者。1、笔者用的是用户登录,所以在sitecontroller中加以下代码: public function actions()
{
return array(
// captcha action renders the CAPTCHA image displayed on the contact page
‘captcha’=>array(
‘class’=>’CCaptchaAction’,
‘backColor’=>0xFFFFFF, //背景颜色
‘minLength’=>4, //最短为4位
‘maxLength’=>4, //是长为4位
‘transparent’=>true, //显示为透明,当关闭该选项,才显示背景颜色
),
);
}
2、在表单文件中加如下代码(视图文件如login.php):

labelEx($model,’verifyCode’); ?>


widget(‘CCaptcha’); ?>
textField($model,’verifyCode’); ?>

输入验证码


error($model,’verifyCode’); ?>

3、在Loginform模型(LoginForm.php)中 加入如下代码,主要是添加属性字段,否则会报错(不存在的属性 ) public $username;
public $password;
public $verifyCode;
public $rememberMe;
private $_identity; 通过上面的操作实际上我们已经可以看到验证码了,但是在操作的时候我们会发现不输入验证码仍然可以,原因在于我们还没有指定验证是必须的,在LoginForm.php中加上array(‘verifyCode’,'required’)来指定必须,这时我们如果遗漏验证码,将会如下图所示:
本文描述yii验证码的实现,仅仅是笔者应用的一个小例子,网上也有,总结一下,希望帮助到有需要的Yii爱好者。1、笔者用的是用户登录,所以在sitecontroller中加以下代码......余下全文>>
 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn