程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Yii2核心驗證器(Core Validators)的基本用法,yii2validators

Yii2核心驗證器(Core Validators)的基本用法,yii2validators

編輯:關於PHP編程

Yii2核心驗證器(Core Validators)的基本用法,yii2validators


核心驗證器(Core Validators)

Yii提供了一系列常用的核心驗證器,主要存在於 yii\validators 命名空間之下。為了避免使用冗長的類名,可以直接用昵稱來指定相應的核心驗證器。 比如可以用 'required' 昵稱代指 yii\validators\RequiredValidator 類,比如:

1 public function rules()
2 {
3     return [
4         [['email', 'password'], 'required'],
5     ];
6 }

yii\validators\Validator::builtInValidators 屬性聲明了所有被支持的驗證器昵稱。

public static $builtInValidators = [
        'boolean' => 'yii\validators\BooleanValidator',
        'captcha' => 'yii\captcha\CaptchaValidator',
        'compare' => 'yii\validators\CompareValidator',
        'date' => 'yii\validators\DateValidator',
        'default' => 'yii\validators\DefaultValueValidator',
        'double' => 'yii\validators\NumberValidator',
        'each' => 'yii\validators\EachValidator',
        'email' => 'yii\validators\EmailValidator',
        'exist' => 'yii\validators\ExistValidator',
        'file' => 'yii\validators\FileValidator',
        'filter' => 'yii\validators\FilterValidator',
        'image' => 'yii\validators\ImageValidator',
        'in' => 'yii\validators\RangeValidator',
        'integer' => [
            'class' => 'yii\validators\NumberValidator',
            'integerOnly' => true,
        ],
        'match' => 'yii\validators\RegularExpressionValidator',
        'number' => 'yii\validators\NumberValidator',
        'required' => 'yii\validators\RequiredValidator',
        'safe' => 'yii\validators\SafeValidator',
        'string' => 'yii\validators\StringValidator',
        'trim' => [
            'class' => 'yii\validators\FilterValidator',
            'filter' => 'trim',
            'skipOnArray' => true,
        ],
        'unique' => 'yii\validators\UniqueValidator',
        'url' => 'yii\validators\UrlValidator',
        'ip' => 'yii\validators\IpValidator',
    ];

下面詳細介紹每一款驗證器的主要用法和屬性。

一、yii\validators\BooleanValidator  該驗證器檢查輸入是否為一個布爾值。

 1     public function rules()
 2     {
 3         return [
 4             //檢查'data_one'是否為0、1、true、false,當值為0、1的時候無視數據類型
 5             ['data_one', 'boolean'],
 6 
 7             //檢查'date_two'是否為布爾類型,即true和false
 8             ['data_two', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true],
 9         ];
10     }

trueValue: 代表真的值。默認為 '1'。
falseValue:代表假的值。默認為 '0'。
strict:要求輸入值是否必須嚴格匹配 trueValue 或 falseValue。默認為 false。

注意:因為通過 HTML 表單傳遞的輸入數據都是字符串類型,所以一般情況下都需要保持 strict 屬性為false。

二、yii\captcha\CaptchaValidator  驗證碼驗證器

該驗證器通常配合 yii\captcha\CaptchaAction 以及 yii\captcha\Captcha 使用,以確保輸入的值與 yii\captcha\Captcha 小部件所顯示的驗證碼相同。

1         return [
2             //captchaAction 指向用於渲染 CAPTCHA 圖片的 yii\captcha\CaptchaAction 的路由。默認是'site/captcha'
3             //caseSensitive 驗證碼比對是否大小寫敏感,默認是 false
4             //skipOnEmpty 當輸入為空時,是否跳過驗證。默認為false,也就是必須輸入
5             ['verifyCode', 'captcha', 'captchaAction' => 'login/captcha', 'caseSensitive'=>false, 'skipOnEmpty' => false],
6         ];

三、yii\validators\CompareValidator  比較兩個特定輸入值之間的關系是否與 operator 屬性所指定的相同。

 1     public function rules()
 2     {
 3         return [
 4             //檢查'data_one'的值是否與'data_one_repeat'的值相同
 5             //不設置 compareAttribute 屬性,默認與目標屬性加上'_repeat'後綴的的屬性比較
 6             ['data_one', 'compare'],
 7 
 8             //設置 compareAttribute 屬性後,比較的對象就是設置的目標屬性
 9             ['data_two', 'compare', 'compareAttribute' => 'data_three'],
10 
11             //compareValue 設置與 data_one 相比較的常量值
12             //當同時設置 compareValue 和 compareAttribute 時,優先使用 compareValue
13             ['data_four', 'compare', 'compareValue' => 10, 'operator' => '>='],
14         ];
15     }

 operator:比較操作符。
    ==:檢查兩值是否相等。非嚴格模式。
    ===:檢查兩值是否全等。嚴格模式。
    !=:檢查兩值是否不等。非嚴格模式。
    !==:檢查兩值是否不全等。嚴格模式。
    >:檢查待測目標值是否大於給定被測值。
    >=:檢查待測目標值是否大於等於給定被測值。
    <:檢查待測目標值是否小於給定被測值。
    <=:檢查待測目標值是否小於等於給定被測值。

四、yii\validators\DefaultValueValidator  該驗證器給為空的目標屬性分配默認值,並不進行數據驗證。

 1     public function rules()
 2     {
 3         return [
 4             //如果 data_one 的值為空,那麼就設置為 test
 5             ['data_one', 'default' , 'value' => 'test'],
 6             //如果 data_two 的值為空,通過回調函數設置值  $attribute是目標屬性,這裡為 data_two
 7             ['data_two', 'default', 'value' => function($model,$attribute){
 8                 return 'value';
 9             }],
10         ];
11     }
1 //回調函數的基本用法
2 function foo($model, $attribute) {
3     // ... 計算 $value ...
4     return $value;
5 }

五、yii\validators\NumberValidator  檢查輸入值是否為雙精度浮點數

 1     public function rules()
 2     {
 3         return [
 4             //驗證器 double 等同於 number
 5             //檢查data_one 是否是一個數字
 6             ['data_one', 'double'],
 7             //max 設置上限值  min 設置下限值,都包含界點。不設置則不檢查上下限值
 8             ['data_two', 'number', 'max' => 10, 'min' => 5],
 9         ];
10     }

六、yii\validators\EachValidator  驗證數組裡的每個元素是否符合某種規則

 1     public function rules()
 2     {
 3         return [
 4             //驗證數組 data_one 裡的元素都是數值
 5             ['data_one', 'each', 'rule' => ['integer']],
 6 
 7             //驗證數組 data_two 裡的元素都是布爾值
 8             ['data_two', 'each', 'rule' => ['boolean'],'allowMessageFromRule'=> false,'message'=> '必須都是布爾值'],
 9         ];
10     }

  需要驗證的值必須是一個數組。
  rule:    通過一個數組指定一個驗證規則。數組的第一個元素是驗證器的類名或者別名,剩余的元素以鍵值對的方式來設置驗證器的屬性配置。
  allowMessageFromRule:   是否使用引用驗證器裡返回的錯誤信息,默認為true。如果設置為false,那麼就必須要設置 message 屬性。
  注意:如果需要驗證的值不是一個數組,那麼就會認為是驗證失敗,那麼設置的 message 就會返回作為錯誤信息。

七、yii\validators\EmailValidator  檢測輸入的值是否為有效的郵箱地址

1     public function rules()
2     {
3         return [
4             //驗證email 是否為有效的郵箱地址
5             ['email', 'email'],
6         ];
7     }

  allowName:檢查是否允許帶名稱的電子郵件地址 (e.g. 張三 <[email protected]>)。 默認為 false。
  checkDNS:檢查郵箱域名是否存在,且有沒有對應的 A 或 MX 記錄。有的時候該項檢查可能會因為臨時性 DNS 故障而失敗,哪怕它其實是有效的。 默認為 false。
  enableIDN:驗證過程是否應該考慮 IDN(internationalized domain names,國際化域名, 也稱多語種域名,比如中文域名)。默認為 false。使用 IDN 驗證功能,請先確保安裝並開啟 intl PHP 擴展,不然會導致拋出異常。

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