首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Yii2 驗證器完整圖鑑:內建驗證器分類與實戰用法

     編輯:PHP 綜合知識

Yii2 驗證器體系全景指南

Yii2 提供豐富的內建驗證器(yii\validators\Validator 子類),涵蓋資料類型、格式、業務規則、檔案上傳、資料庫唯一性等場景。本文按功能分類詳細列舉所有核心驗證器用法、參數與實戰範例。

驗證器宣告語法

public function rules() {
    return [
        [['email', 'password'], 'required'],
        ['password', 'string', 'min' => 6],
        // 格式:[屬性清單, 驗證器名稱, 參數陣列]
    ];
}

驗證器分類完整對照表

數值型驗證器

驗證器類別用途關鍵參數
integerNumberValidator整數驗證min, max
double / numberNumberValidator浮點數驗證min, max

格式型驗證器

驗證器類別用途關鍵參數
dateDateValidator日期格式format, timestampAttribute
emailEmailValidator電子郵件enableIDN, checkDNS
urlUrlValidatorURL 格式validSchemes, defaultScheme

資料處理型驗證器

驗證器類別用途關鍵參數
filterFilterValidator資料過濾/轉換filter (callable)
trimFilterValidator去除首尾空白pattern (自訂字元)

檔案上傳驗證器

驗證器類別用途關鍵參數
fileFileValidator通用檔案extensions, maxSize, mimeTypes
imageImageValidator圖片專用minWidth, maxWidth, minHeight, maxHeight

比較與範圍驗證器

驗證器類別用途關鍵參數
compareCompareValidator兩值比較compareAttribute, operator (==, ===, >, <, >=, <=, !=)
inRangeValidator值在列表中range, strict, not
existExistValidator資料庫存在性targetClass, targetAttribute, filter
uniqueUniqueValidator資料庫唯一性targetClass, targetAttribute, filter

字串與布林驗證器

驗證器類別用途關鍵參數
stringStringValidator長度驗證min, max, length, encoding
booleanBooleanValidator布林值trueValue, falseValue, strict

特殊用途驗證器

驗證器類別用途關鍵參數
defaultDefaultValueValidator設定預設值value, when (callable)
requiredRequiredValidator必填檢查requiredValue, strict, when, whenClient
captchaCaptchaValidator驗證碼captchaAction, caseSensitive
matchRegularExpressionValidator正則表達式pattern, not
safeSafeValidator標記安全屬性無參數,僅用於大量賦值白名單

進階用法範例

條件式驗證

['status', 'in', 'range' => [1,2,3], 'when' => function($model) {
    return $model->scenario === 'admin';
}]

自訂驗證器

class PhoneValidator extends Validator {
    public function validateAttribute($model, $attribute) {
        if (!preg_match('/^09\d{8}$/', $model->$attribute)) {
            $this->addError($model, $attribute, '手機格式錯誤');
        }
    }
}

// 使用
['phone', PhoneValidator::className()]

多欄位唯一性

[['first_name', 'last_name'], 'unique', 'targetAttribute' => ['first_name', 'last_name']]

驗證器執行順序與場景

  • 依 rules() 陣列順序執行
  • on 參數指定場景(create, update, 自訂)
  • except 排除場景
  • skipOnEmpty, skipOnError 控制流程

總結

Yii2 驗證器體系完整覆蓋從基礎資料類型到複雜業務規則的驗證需求。善用內建驗證器組合與條件式參數,能大幅減少自訂驗證碼,提升程式碼可讀性與維護性。match 正則驗證器為萬用補位,但優先使用語義化驗證器以利文檔化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved