程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Yii CModel中rules驗證規則[轉],yiicmodel

Yii CModel中rules驗證規則[轉],yiicmodel

編輯:關於PHP編程

Yii CModel中rules驗證規則[轉],yiicmodel


 

array(

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

 

預定義完整列表: 
  • 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): <?php if(CCaptcha::checkRequirements()): ?>
< div>
< ?php echo $form->labelEx($model,’verifyCode’); ?> <br/>
< div>
< ?php $this->widget(‘CCaptcha’); ?>
< ?php echo $form->textField($model,’verifyCode’); ?>
< /div>
< div>輸入驗證碼
<br/></div>
< ?php echo $form->error($model,’verifyCode’); ?>
< /div>
3、在Loginform模型(LoginForm.php)中 加入如下代碼,主要是添加屬性字段,否則會報錯(不存在的屬性 ) public $username;
public $password;
public $verifyCode;
public $rememberMe;
private $_identity; 通過上面的操作實際上我們已經可以看到驗證碼了,但是在操作的時候我們會發現不輸入驗證碼仍然可以,原因在於我們還沒有指定驗證是必須的,在LoginForm.php中加上array(‘verifyCode’,'required’)來指定必須,這時我們如果遺漏驗證碼,將會如下圖所示:
本文描述yii驗證碼的實現,僅僅是筆者應用的一個小例子,網上也有,總結一下,希望幫助到有需要的Yii愛好者。1、筆者用的是用戶登錄,所以在sitecontroller中加以下代碼......余下全文>>
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved