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 |
瀛愮被蹇呴』瀹屾垚validateAttribute鏂规硶銆
鍦–Validator涓畾涔変簡涓嬪垪灞炴э細
- attributes: array, 闇瑕佽楠岃瘉鐨勫睘鎬х殑鍒楄〃锛
- message: string, 鑷畾涔夌殑閿欒鎻愮ず淇℃伅銆傚畠鍙互 鍖呭惈鍗犱綅绗︼紝鍦ㄨ緭鍑烘椂鍗犵敤绗﹀皢琚疄闄呭唴瀹规浛鎹€ 渚嬪锛屽崰浣嶇鈥渰attribute}鈥濆皢琚湁闂鐨勫睘鎬х殑鏍囩鏇挎崲銆 涓嶅悓鐨勯獙璇佸櫒鍙互瀹氫箟棰濆鐨勫崰浣嶇銆
- on: string, 鎸囨槑楠岃瘉鍣ㄥ湪浣曠鎯呮櫙妯″紡锛坰cenario锛変笅鐢熸晥銆 姝ゅ睘鎬т笌璋冪敤CModel::validate鏂规硶鏃舵彁渚涚殑鈥渙n鈥濆弬鏁扮浉鍖归厤銆
褰撲娇鐢createValidator鏉ュ垱寤轰竴涓獙璇佸櫒鏃讹紝鍙互浣跨敤浠ヤ笅 鍒悕锛屽畠浠彲浠ヨ璇嗗埆涓哄搴旂殑鍐呯疆楠岃瘉鍣ㄧ被锛
- 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
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
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 |
灞炴ц缁
闇瑕佽楠岃瘉鐨勫睘鎬х殑鍒楄〃銆
鍐呯疆楠岃瘉鍣ㄥ垪琛 (name=>class)
鏄惁鎵ц瀹㈡埛绔獙璇併傞粯璁ゅ间负true銆 鍙傝CActiveForm::enableClientValidation浠ヤ簡瑙f洿澶氬叧浜庡鎴风楠岃瘉鐨勭粏鑺傘
鐢ㄦ埛鑷畾涔夌殑閿欒鎻愮ず淇℃伅銆備笉鍚岀殑楠岃瘉鍣ㄥ彲浠ュ湪璇ヤ俊鎭腑 瀹氫箟鍚勭鍗犱綅绗︼紙灏嗚瀹為檯鍊兼浛鎹級銆傚崰浣嶇鈥渰attribute}鈥濆彲浠ヨ鎵鏈 楠岃瘉鍣ㄨ瘑鍒紝瀹冧細琚娇鐢ㄥ睘鎬х殑鏍囩鏉ユ浛鎹€
楠岃瘉鍣ㄥ皢琚簲鐢ㄥ埌鐨勬儏鏅ā寮忕殑鍒楄〃銆 鏁扮粍鐨勯敭-鍊奸兘鏄儏鏅ā寮忕殑鍚嶇О銆
杩涜鏁村潡璧嬪兼槸鏄惁鑰冭檻姝ら獙璇佸櫒涓垪鍑虹殑灞炴х殑瀹夊叏鎬с 榛樿鍊间负true銆
濡傛灉褰撳墠灞炴у凡缁忓瓨鍦ㄩ獙璇侀敊璇紝杩欎釜楠岃瘉瑙勫垯 鏄惁璺宠繃銆傞粯璁ゅ兼槸false銆
鏂规硶璇︾粏
protected void addError(CModel $object, string $attribute, string $message, array $params=array (
))
| ||
$object | CModel | 闇瑕侀獙璇佺殑鏁版嵁瀵硅薄 |
$attribute | string | 闇瑕侀獙璇佺殑灞炴 |
$message | string | 閿欒鎻愮ず淇℃伅 |
$params | array | 鍦ㄩ敊璇彁绀轰俊鎭腑鍚勪釜鍗犱綅绗︾殑鍊笺 |
protected function addError($object,$attribute,$message,$params=array())
{
$params['{attribute}']=$object->getAttributeLabel($attribute);
$object->addError($attribute,strtr($message,$params));
}
娣诲姞鍏充簬鎸囧畾灞炴х殑涓涓敊璇彁绀轰俊鎭埌娲诲姩璁板綍涓 杩欐槸涓涓墽琛屾秷鎭夋嫨鍜屽浗闄呭寲鐨勫姪鎵嬬被銆
public boolean applyTo(string $scenario)
| ||
$scenario | string | 鎯呮櫙妯″紡鍚嶇О |
{return} | boolean | 姝ら獙璇佸櫒鏄惁搴旂敤鍒版寚瀹氱殑鎯呮櫙妯″紡銆 |
public function applyTo($scenario)
{
return empty($this->on) || isset($this->on[$scenario]);
}
杩斿洖鍊兼寚瀹氭楠岃瘉鍣ㄦ槸鍚﹀簲鐢ㄥ埌鎸囧畾鐨勬儏鏅ā寮忋 涓涓獙璇佸櫒搴旂敤鍒颁竴涓儏鏅ā寮忛渶瑕佹弧瓒充互涓嬫潯浠朵箣涓锛
- 姝ら獙璇佸櫒鐨勨渙n鈥濆睘鎬у间负绌
- 姝ら獙璇佸櫒鐨勨渙n鈥濆睘鎬у煎寘鍚寚瀹氱殑鎯呮櫙妯″紡
public string clientValidateAttribute(CModel $object, string $attribute)
| ||
$object | CModel | 闇瑕佽楠岃瘉鐨勬暟鎹璞 |
$attribute | string | 闇瑕侀獙璇佺殑灞炴у悕绉 |
{return} | string | 瀹㈡埛绔獙璇佽剼鏈傚鏋滄楠岃瘉鍣ㄤ笉鏀寔瀹㈡埛绔獙璇侊紝鍒欒繑鍥濶ull銆 |
public function clientValidateAttribute($object,$attribute)
{
}
杩斿洖鎵ц瀹㈡埛绔獙璇佹墍闇鐨凧avaScript鑴氭湰銆 濡傛灉楠岃瘉鍣ㄤ笉鏀寔瀹㈡埛绔獙璇侊紝璇蜂笉瑕佽鐩栨鏂规硶銆 鏈変袱涓瀹氱殑JavaScript鍙橀噺鍙互浣跨敤锛
- value: 闇瑕佽楠岃瘉鐨勫
- messages: 鐢ㄤ簬淇濆瓨琚獙璇佺殑鍊肩殑閿欒鎻愮ず淇℃伅鐨勬暟缁
public static CValidator createValidator(string $name, CModel $object, mixed $attributes, array $params=array (
))
| ||
$name | string | 楠岃瘉鍣ㄧ殑鍚嶇О鎴栫被銆 |
$object | CModel | 琚獙璇佺殑鏁版嵁妯″瀷瀵硅薄锛屽畠鍙互鍖呭惈鍐呰仈鐨勯獙璇佹柟娉曘 |
$attributes | mixed | 琚獙璇佺殑灞炴х殑鍒楄〃锛屽畠鍙互鏄竴涓敱灞炴у悕绉 缁勬垚鐨勬暟缁勶紝涔熷彲浠ユ槸涓涓敤閫楀彿鍒嗛殧鐨勫睘鎬у悕绉扮粍鎴愮殑瀛楃涓层 |
$params | array | 搴旂敤鍒伴獙璇佸櫒灞炴х殑鍒濆鍊笺 |
{return} | CValidator | 鐢熸垚鐨勯獙璇佸櫒瀹炰緥 |
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;
}
鍒涘缓涓涓獙璇佸櫒瀵硅薄銆
protected boolean isEmpty(mixed $value, boolean $trim=false)
| ||
$value | mixed | 闇瑕佹娴嬬殑鍊 |
$trim | boolean | 褰撴娴嬪瓧绗︿覆鏄惁涓虹┖鏃讹紝鏄惁棣栧厛鎵ц淇暣銆傞粯璁ゅ间负false銆 |
{return} | boolean | 缁欏畾鍊兼槸鍚︿负绌 |
protected function isEmpty($value,$trim=false)
{
return $value===null || $value===array() || $value==='' || $trim && is_scalar($value) && trim($value)==='';
}
妫娴嬬粰瀹氬兼槸鍚︿负绌恒 褰撲竴涓间负null锛屾垨绌烘暟缁勶紝鎴栦慨鏁村悗涓虹┖鐨勫瓧绗︿覆鏃讹紝鎴戜滑璁や负姝ゅ间负绌恒 娉ㄦ剰锛氭鏂规硶涓嶱HP鐨別mpty()鏂规硶涓嶅悓锛屽綋鍊间负0鏃跺畠杩斿洖false銆
public void validate(CModel $object, array $attributes=NULL)
| ||
$object | CModel | 闇瑕佽楠岃瘉鐨勬暟鎹ā鍨嬪璞 |
$attributes | array | 琚獙璇佺殑灞炴х殑鍒楄〃銆傞粯璁ゅ兼槸null锛 琛ㄧずattributes涓垪鍑虹殑鎵鏈夊睘鎬ч兘灏嗚楠岃瘉銆 |
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);
}
}
楠岃瘉缁欏畾鐨勫璞°
abstract protected void validateAttribute(CModel $object, string $attribute)
| ||
$object | CModel | 琚獙璇佺殑鏁版嵁妯″瀷瀵硅薄 |
$attribute | string | 琚獙璇佺殑灞炴у悕绉 |
abstract protected function validateAttribute($object,$attribute);
楠岃瘉涓涓崟涓灞炴с 姝ゆ柟娉曢渶瑕佺敱瀛愮被瑕嗙洊銆