CCaptchaValidator
CCaptchaValidator validates that the attribute value is the same as the verification code displayed in the CAPTCHA.
CCaptchaValidator should be used together with CCaptchaAction.
公共属性
属性类型描述被定义在
boolean
whether the attribute value can be null or empty.
CCaptchaValidator
array
list of attributes to be validated.
array
list of built-in validators (name=>class)
boolean
whether the comparison is case sensitive.
CCaptchaValidator
boolean
whether to perform client-side validation.
array
list of scenarios that the validator should not be applied to.
string
the user-defined error message.
array
list of scenarios that the validator should be applied.
boolean
whether attributes listed with this validator should be considered safe for massive assignment.
boolean
whether this validation rule should be skipped when there is already a validation
error for the current attribute.
受保护的属性
属性类型描述被定义在
Returns the CAPTCHA action object.
CCaptchaValidator
公共方法
方法描述被定义在
Calls the named method which is not a class method.
Returns a property value, an event handler list or a behavior based on its name.
Checks if a property value is null.
Sets value of a component property.
Sets a component property to be null.
Returns a value indicating whether the validator applies to the specified scenario.
Returns the named behavior object.
Attaches a behavior to this component.
Attaches a list of behaviors to the component.
Attaches an event handler to an event.
Determines whether a property can be read.
Determines whether a property can be set.
Returns the JavaScript needed for performing client-side validation.
CCaptchaValidator
Creates a validator object.
Detaches a behavior from the component.
Detaches all behaviors from the component.
Detaches an existing event handler.
Disables an attached behavior.
Disables all behaviors attached to this component.
Enables an attached behavior.
Enables all behaviors attached to this component.
Evaluates a PHP expression or callback under the context of this component.
Returns the list of attached event handlers for an event.
Determines whether an event is defined.
Checks whether the named event has attached handlers.
Determines whether a property is defined.
Validates the specified object.
受保护的方法
方法描述被定义在
Adds an error about the specified attribute to the active record.
Returns the CAPTCHA action object.
CCaptchaValidator
Checks if the given value is empty.
Validates the attribute of the object.
CCaptchaValidator
属性详情
allowEmpty属性
public boolean $allowEmpty;
whether the attribute value can be null or empty.
Defaults to false, meaning the attribute is invalid if it is empty.
captchaAction属性
只读 (自版本 v1.1.7 可用)
Returns the CAPTCHA action object.
caseSensitive属性
public boolean $caseSensitive;
whether the comparison is case sensitive. Defaults to false.
方法详情
clientValidateAttribute()
方法
(自版本 v1.1.7 可用)
public string clientValidateAttribute(CModel $object, string $attribute)
$object
the data object being validated
$attribute
string
the name of the attribute to be validated.
{return}
string
the client-side validation script.
源码: framework/validators/CCaptchaValidator.php#91 (
public functionclientValidateAttribute($object,$attribute)
{$captcha=$this->getCaptchaAction();$message=$this->message!==null?$this->message:Yii::t('yii','The verification code is incorrect.');$message=strtr($message, array('{attribute}'=>$object->getAttributeLabel($attribute),
));$code=$captcha->getVerifyCode(false);$hash=$captcha->generateValidationHash($this->caseSensitive?$code:strtolower($code));$js="
var hash = jQuery('body').data('{$this->captchaAction}.hash');
if (hash == null)
hash =$hash;
else
hash = hash[".($this->caseSensitive?0:1)."];
for(var i=value.length-1, h=0; i >= 0; --i) h+=value.".($this->caseSensitive?'':'toLowerCase().')."charCodeAt(i);
if(h != hash) {
messages.push(".CJSON::encode($message).");
}
";
if($this->allowEmpty)
{$js="
if(jQuery.trim(value)!='') {$js}
";
}
return$js;
}
Returns the JavaScript needed for performing client-side validation.
getCaptchaAction()
方法
(自版本 v1.1.7 可用)
protected CCaptchaAction getCaptchaAction()
{return}
the action object
源码: framework/validators/CCaptchaValidator.php#64 (
protected functiongetCaptchaAction()
{
if(($captcha=Yii::app()->getController()->createAction($this->captchaAction))===null)
{
if(strpos($this->captchaAction,'/')!==false)// contains controller or module{
if(($ca=Yii::app()->createController($this->captchaAction))!==null)
{
list($controller,$actionID)=$ca;$captcha=$controller->createAction($actionID);
}
}
if($captcha===null)
throw newCException(Yii::t('yii','CCaptchaValidator.action "{id}" is invalid. Unable to find such an action in the current controller.',
array('{id}'=>$this->captchaAction)));
}
return$captcha;
}
Returns the CAPTCHA action object.
validateAttribute()
方法
protected void validateAttribute(CModel $object, string $attribute)
$object
the object being validated
$attribute
string
the attribute being validated
源码: framework/validators/CCaptchaValidator.php#44 (
protected functionvalidateAttribute($object,$attribute)
{$value=$object->$attribute;
if($this->allowEmpty&&$this->isEmpty($value))
return;$captcha=$this->getCaptchaAction();// reason of array checking is explained here: https://github.com/yiisoft/yii/issues/1955if(is_array($value) || !$captcha->validate($value,$this->caseSensitive))
{$message=$this->message!==null?$this->message:Yii::t('yii','The verification code is incorrect.');$this->addError($object,$attribute,$message);
}
}
Validates the attribute of the object.
If there is any error, the error message is added to the object.