Yii Framework v1.1.10 绫诲弬鑰

CValidator

system.validators
缁ф壙 abstract class CValidator » CComponent
瀛愮被 CBooleanValidator, CCaptchaValidator, CCompareValidator, CDateValidator, CDefaultValueValidator, CEmailValidator, CExistValidator, CFileValidator, CFilterValidator, CInlineValidator, CNumberValidator, CRangeValidator, CRegularExpressionValidator, CRequiredValidator, CSafeValidator, CStringValidator, CTypeValidator, CUniqueValidator, CUnsafeValidator, CUrlValidator
婧愯嚜 1.0
鐗堟湰 $Id: CValidator.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/validators/CValidator.php
CValidator鏄墍鏈夐獙璇佸櫒绫荤殑鍩虹被銆

瀛愮被蹇呴』瀹屾垚validateAttribute鏂规硶銆

鍦–Validator涓畾涔変簡涓嬪垪灞炴э細
  • attributes: array, 闇瑕佽楠岃瘉鐨勫睘鎬х殑鍒楄〃锛
  • message: string, 鑷畾涔夌殑閿欒鎻愮ず淇℃伅銆傚畠鍙互 鍖呭惈鍗犱綅绗︼紝鍦ㄨ緭鍑烘椂鍗犵敤绗﹀皢琚疄闄呭唴瀹规浛鎹€ 渚嬪锛屽崰浣嶇鈥渰attribute}鈥濆皢琚湁闂鐨勫睘鎬х殑鏍囩鏇挎崲銆 涓嶅悓鐨勯獙璇佸櫒鍙互瀹氫箟棰濆鐨勫崰浣嶇銆
  • on: string, 鎸囨槑楠岃瘉鍣ㄥ湪浣曠鎯呮櫙妯″紡锛坰cenario锛変笅鐢熸晥銆 姝ゅ睘鎬т笌璋冪敤CModel::validate鏂规硶鏃舵彁渚涚殑鈥渙n鈥濆弬鏁扮浉鍖归厤銆


褰撲娇鐢createValidator鏉ュ垱寤轰竴涓獙璇佸櫒鏃讹紝鍙互浣跨敤浠ヤ笅 鍒悕锛屽畠浠彲浠ヨ璇嗗埆涓哄搴旂殑鍐呯疆楠岃瘉鍣ㄧ被锛

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
attributes array 闇瑕佽楠岃瘉鐨勫睘鎬х殑鍒楄〃銆 CValidator
builtInValidators array 鍐呯疆楠岃瘉鍣ㄥ垪琛 (name=>class) CValidator
enableClientValidation boolean 鏄惁鎵ц瀹㈡埛绔獙璇併傞粯璁ゅ间负true銆 鍙傝CActiveForm::enableClientValidation浠ヤ簡瑙f洿澶氬叧浜庡鎴风楠岃瘉鐨勭粏鑺傘 CValidator
message string 鐢ㄦ埛鑷畾涔夌殑閿欒鎻愮ず淇℃伅銆備笉鍚岀殑楠岃瘉鍣ㄥ彲浠ュ湪璇ヤ俊鎭腑 瀹氫箟鍚勭鍗犱綅绗︼紙灏嗚瀹為檯鍊兼浛鎹級銆傚崰浣嶇鈥渰attribute}鈥濆彲浠ヨ鎵鏈 楠岃瘉鍣ㄨ瘑鍒紝瀹冧細琚娇鐢ㄥ睘鎬х殑鏍囩鏉ユ浛鎹€ CValidator
on array 楠岃瘉鍣ㄥ皢琚簲鐢ㄥ埌鐨勬儏鏅ā寮忕殑鍒楄〃銆 鏁扮粍鐨勯敭-鍊奸兘鏄儏鏅ā寮忕殑鍚嶇О銆 CValidator
safe boolean 杩涜鏁村潡璧嬪兼槸鏄惁鑰冭檻姝ら獙璇佸櫒涓垪鍑虹殑灞炴х殑瀹夊叏鎬с 榛樿鍊间负true銆 CValidator
skipOnError boolean 濡傛灉褰撳墠灞炴у凡缁忓瓨鍦ㄩ獙璇侀敊璇紝杩欎釜楠岃瘉瑙勫垯 鏄惁璺宠繃銆傞粯璁ゅ兼槸false銆 CValidator

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 CComponent
__set() 璁剧疆涓涓粍浠剁殑灞炴у笺 CComponent
__unset() 璁剧疆涓涓粍浠剁殑灞炴т负null銆 CComponent
applyTo() 杩斿洖鍊兼寚瀹氭楠岃瘉鍣ㄦ槸鍚﹀簲鐢ㄥ埌鎸囧畾鐨勬儏鏅ā寮忋 CValidator
asa() 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° CComponent
attachBehavior() 闄勫姞涓涓涓哄埌缁勪欢銆 CComponent
attachBehaviors() 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 CComponent
attachEventHandler() 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 CComponent
canGetProperty() 纭畾灞炴ф槸鍚﹀彲璇汇 CComponent
canSetProperty() 纭畾灞炴ф槸鍚﹀彲鍐欍 CComponent
clientValidateAttribute() 杩斿洖鎵ц瀹㈡埛绔獙璇佹墍闇鐨凧avaScript鑴氭湰銆 CValidator
createValidator() 鍒涘缓涓涓獙璇佸櫒瀵硅薄銆 CValidator
detachBehavior() 浠庣粍浠朵腑鍒嗙涓涓涓恒 CComponent
detachBehaviors() 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 CComponent
detachEventHandler() 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 CComponent
disableBehavior() 绂佺敤涓涓檮鍔犺涓恒 CComponent
disableBehaviors() 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
enableBehavior() 鍚敤涓涓檮鍔犺涓恒 CComponent
enableBehaviors() 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
evaluateExpression() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
validate() 楠岃瘉缁欏畾鐨勫璞° CValidator

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
addError() 娣诲姞鍏充簬鎸囧畾灞炴х殑涓涓敊璇彁绀轰俊鎭埌娲诲姩璁板綍涓 CValidator
isEmpty() 妫娴嬬粰瀹氬兼槸鍚︿负绌恒 CValidator
validateAttribute() 楠岃瘉涓涓崟涓灞炴с CValidator

灞炴ц缁

attributes 灞炴
public array $attributes;

闇瑕佽楠岃瘉鐨勫睘鎬х殑鍒楄〃銆

builtInValidators 灞炴
public static array $builtInValidators;

鍐呯疆楠岃瘉鍣ㄥ垪琛 (name=>class)

enableClientValidation 灞炴 锛堝彲鐢ㄨ嚜 v1.1.7锛
public boolean $enableClientValidation;

鏄惁鎵ц瀹㈡埛绔獙璇併傞粯璁ゅ间负true銆 鍙傝CActiveForm::enableClientValidation浠ヤ簡瑙f洿澶氬叧浜庡鎴风楠岃瘉鐨勭粏鑺傘

message 灞炴
public string $message;

鐢ㄦ埛鑷畾涔夌殑閿欒鎻愮ず淇℃伅銆備笉鍚岀殑楠岃瘉鍣ㄥ彲浠ュ湪璇ヤ俊鎭腑 瀹氫箟鍚勭鍗犱綅绗︼紙灏嗚瀹為檯鍊兼浛鎹級銆傚崰浣嶇鈥渰attribute}鈥濆彲浠ヨ鎵鏈 楠岃瘉鍣ㄨ瘑鍒紝瀹冧細琚娇鐢ㄥ睘鎬х殑鏍囩鏉ユ浛鎹€

on 灞炴
public array $on;

楠岃瘉鍣ㄥ皢琚簲鐢ㄥ埌鐨勬儏鏅ā寮忕殑鍒楄〃銆 鏁扮粍鐨勯敭-鍊奸兘鏄儏鏅ā寮忕殑鍚嶇О銆

safe 灞炴 锛堝彲鐢ㄨ嚜 v1.1.4锛
public boolean $safe;

杩涜鏁村潡璧嬪兼槸鏄惁鑰冭檻姝ら獙璇佸櫒涓垪鍑虹殑灞炴х殑瀹夊叏鎬с 榛樿鍊间负true銆

skipOnError 灞炴 锛堝彲鐢ㄨ嚜 v1.1.1锛
public boolean $skipOnError;

濡傛灉褰撳墠灞炴у凡缁忓瓨鍦ㄩ獙璇侀敊璇紝杩欎釜楠岃瘉瑙勫垯 鏄惁璺宠繃銆傞粯璁ゅ兼槸false銆

鏂规硶璇︾粏

addError() 鏂规硶
protected void addError(CModel $object, string $attribute, string $message, array $params=array ( ))
$object CModel 闇瑕侀獙璇佺殑鏁版嵁瀵硅薄
$attribute string 闇瑕侀獙璇佺殑灞炴
$message string 閿欒鎻愮ず淇℃伅
$params array 鍦ㄩ敊璇彁绀轰俊鎭腑鍚勪釜鍗犱綅绗︾殑鍊笺
婧愮爜锛 framework/validators/CValidator.php#242 (鏄剧ず)
protected function addError($object,$attribute,$message,$params=array())
{
    
$params['{attribute}']=$object->getAttributeLabel($attribute);
    
$object->addError($attribute,strtr($message,$params));
}

娣诲姞鍏充簬鎸囧畾灞炴х殑涓涓敊璇彁绀轰俊鎭埌娲诲姩璁板綍涓 杩欐槸涓涓墽琛屾秷鎭夋嫨鍜屽浗闄呭寲鐨勫姪鎵嬬被銆

applyTo() 鏂规硶
public boolean applyTo(string $scenario)
$scenario string 鎯呮櫙妯″紡鍚嶇О
{return} boolean 姝ら獙璇佸櫒鏄惁搴旂敤鍒版寚瀹氱殑鎯呮櫙妯″紡銆
婧愮爜锛 framework/validators/CValidator.php#229 (鏄剧ず)
public function applyTo($scenario)
{
    return empty(
$this->on) || isset($this->on[$scenario]);
}

杩斿洖鍊兼寚瀹氭楠岃瘉鍣ㄦ槸鍚﹀簲鐢ㄥ埌鎸囧畾鐨勬儏鏅ā寮忋 涓涓獙璇佸櫒搴旂敤鍒颁竴涓儏鏅ā寮忛渶瑕佹弧瓒充互涓嬫潯浠朵箣涓锛

clientValidateAttribute() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.7锛
public string clientValidateAttribute(CModel $object, string $attribute)
$object CModel 闇瑕佽楠岃瘉鐨勬暟鎹璞
$attribute string 闇瑕侀獙璇佺殑灞炴у悕绉
{return} string 瀹㈡埛绔獙璇佽剼鏈傚鏋滄楠岃瘉鍣ㄤ笉鏀寔瀹㈡埛绔獙璇侊紝鍒欒繑鍥濶ull銆
婧愮爜锛 framework/validators/CValidator.php#215 (鏄剧ず)
public function clientValidateAttribute($object,$attribute)
{
}

杩斿洖鎵ц瀹㈡埛绔獙璇佹墍闇鐨凧avaScript鑴氭湰銆 濡傛灉楠岃瘉鍣ㄤ笉鏀寔瀹㈡埛绔獙璇侊紝璇蜂笉瑕佽鐩栨鏂规硶銆 鏈変袱涓瀹氱殑JavaScript鍙橀噺鍙互浣跨敤锛

createValidator() 鏂规硶
public static CValidator createValidator(string $name, CModel $object, mixed $attributes, array $params=array ( ))
$name string 楠岃瘉鍣ㄧ殑鍚嶇О鎴栫被銆
$object CModel 琚獙璇佺殑鏁版嵁妯″瀷瀵硅薄锛屽畠鍙互鍖呭惈鍐呰仈鐨勯獙璇佹柟娉曘
$attributes mixed 琚獙璇佺殑灞炴х殑鍒楄〃锛屽畠鍙互鏄竴涓敱灞炴у悕绉 缁勬垚鐨勬暟缁勶紝涔熷彲浠ユ槸涓涓敤閫楀彿鍒嗛殧鐨勫睘鎬у悕绉扮粍鎴愮殑瀛楃涓层
$params array 搴旂敤鍒伴獙璇佸櫒灞炴х殑鍒濆鍊笺
{return} CValidator 鐢熸垚鐨勯獙璇佸櫒瀹炰緥
婧愮爜锛 framework/validators/CValidator.php#136 (鏄剧ず)
public static function createValidator($name,$object,$attributes,$params=array())
{
    if(
is_string($attributes))
        
$attributes=preg_split('/[\s,]+/',$attributes,-1,PREG_SPLIT_NO_EMPTY);

    if(isset(
$params['on']))
    {
        if(
is_array($params['on']))
            
$on=$params['on'];
        else
            
$on=preg_split('/[\s,]+/',$params['on'],-1,PREG_SPLIT_NO_EMPTY);
    }
    else
        
$on=array();

    if(
method_exists($object,$name))
    {
        
$validator=new CInlineValidator;
        
$validator->attributes=$attributes;
        
$validator->method=$name;
        if(isset(
$params['clientValidate']))
        {
            
$validator->clientValidate=$params['clientValidate'];
            unset(
$params['clientValidate']);
        }
        
$validator->params=$params;
        if(isset(
$params['skipOnError']))
            
$validator->skipOnError=$params['skipOnError'];
    }
    else
    {
        
$params['attributes']=$attributes;
        if(isset(
self::$builtInValidators[$name]))
            
$className=Yii::import(self::$builtInValidators[$name],true);
        else
            
$className=Yii::import($name,true);
        
$validator=new $className;
        foreach(
$params as $name=>$value)
            
$validator->$name=$value;
    }

    
$validator->on=empty($on) ? array() : array_combine($on,$on);

    return 
$validator;
}

鍒涘缓涓涓獙璇佸櫒瀵硅薄銆

isEmpty() 鏂规硶
protected boolean isEmpty(mixed $value, boolean $trim=false)
$value mixed 闇瑕佹娴嬬殑鍊
$trim boolean 褰撴娴嬪瓧绗︿覆鏄惁涓虹┖鏃讹紝鏄惁棣栧厛鎵ц淇暣銆傞粯璁ゅ间负false銆
{return} boolean 缁欏畾鍊兼槸鍚︿负绌
婧愮爜锛 framework/validators/CValidator.php#256 (鏄剧ず)
protected function isEmpty($value,$trim=false)
{
    return 
$value===null || $value===array() || $value==='' || $trim && is_scalar($value) && trim($value)==='';
}

妫娴嬬粰瀹氬兼槸鍚︿负绌恒 褰撲竴涓间负null锛屾垨绌烘暟缁勶紝鎴栦慨鏁村悗涓虹┖鐨勫瓧绗︿覆鏃讹紝鎴戜滑璁や负姝ゅ间负绌恒 娉ㄦ剰锛氭鏂规硶涓嶱HP鐨別mpty()鏂规硶涓嶅悓锛屽綋鍊间负0鏃跺畠杩斿洖false銆

validate() 鏂规硶
public void validate(CModel $object, array $attributes=NULL)
$object CModel 闇瑕佽楠岃瘉鐨勬暟鎹ā鍨嬪璞
$attributes array 琚獙璇佺殑灞炴х殑鍒楄〃銆傞粯璁ゅ兼槸null锛 琛ㄧずattributes涓垪鍑虹殑鎵鏈夊睘鎬ч兘灏嗚楠岃瘉銆
婧愮爜锛 framework/validators/CValidator.php#188 (鏄剧ず)
public function validate($object,$attributes=null)
{
    if(
is_array($attributes))
        
$attributes=array_intersect($this->attributes,$attributes);
    else
        
$attributes=$this->attributes;
    foreach(
$attributes as $attribute)
    {
        if(!
$this->skipOnError || !$object->hasErrors($attribute))
            
$this->validateAttribute($object,$attribute);
    }
}

楠岃瘉缁欏畾鐨勫璞°

validateAttribute() 鏂规硶
abstract protected void validateAttribute(CModel $object, string $attribute)
$object CModel 琚獙璇佺殑鏁版嵁妯″瀷瀵硅薄
$attribute string 琚獙璇佺殑灞炴у悕绉
婧愮爜锛 framework/validators/CValidator.php#124 (鏄剧ず)
abstract protected function validateAttribute($object,$attribute);

楠岃瘉涓涓崟涓灞炴с 姝ゆ柟娉曢渶瑕佺敱瀛愮被瑕嗙洊銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.