Spec-Zone.ru › Yii 1.1

CCaptchaValidator

Пакет system.validators
Наследование class CCaptchaValidator » CValidator » CComponent
С версии 1.0
Исходный код framework/validators/CCaptchaValidator.php
CCaptchaValidator проверяет, что значение атрибута совпадает с кодом проверки, отображенным на CAPTCHA.

CCaptchaValidator следует использовать вместе с CCaptchaAction.

Общедоступные свойства

Свойство Тип Описание Определено в
allowEmpty boolean указывает, может ли значение атрибута быть null или пустым. CCaptchaValidator
attributes array список атрибутов для проверки. CValidator
builtInValidators array список встроенных валидаторов (имя=>класс) CValidator
caseSensitive boolean указывает, будет ли сравнение чувствительным к регистру. CCaptchaValidator
enableClientValidation boolean выполнять ли проверку на стороне клиента. CValidator
except array список сценариев, к которым валидатор не должен применяться. CValidator
message string пользовательское сообщение об ошибке. CValidator
on array список сценариев, к которым должен применяться валидатор. CValidator
safe boolean указывает, должны ли атрибуты, указанные с этим валидатором, считаться безопасными для массового присваивания. CValidator
skipOnError boolean пропустить ли эту проверку, если для текущего атрибута уже есть ошибка проверки. CValidator

Защищенные свойства

Свойство Тип Описание Определено в
captchaAction CCaptchaAction Возвращает объект действия CAPTCHA. CCaptchaValidator

Общедоступные методы

Метод Описание Определено в
__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() Возвращает JavaScript, необходимый для проверки на стороне клиента. CCaptchaValidator
createValidator() Создаёт объект валидатора. CValidator
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все прикрепленные к этому компоненту поведения. CComponent
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет PHP выражение или обратный вызов в контексте этого компонента. CComponent
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики для события с заданным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
raiseEvent() Вызывает событие. CComponent
validate() Проверяет указанный объект. CValidator

Защищенные методы

Метод Описание Определено в
addError() Добавляет ошибку об указанном атрибуте в активную запись. CValidator
getCaptchaAction() Возвращает объект действия CAPTCHA. CCaptchaValidator
isEmpty() Проверяет, пусто ли заданное значение. CValidator
validateAttribute() Проверяет атрибут объекта. CCaptchaValidator

Подробное описание свойств

allowEmpty свойство

public boolean $allowEmpty;

указывает, может ли значение атрибута быть null или пустым. По умолчанию false, что означает, что атрибут является невалидным, если он пустой.

captchaAction свойство только для чтения (доступно с версии 1.1.7)

protected CCaptchaAction getCaptchaAction()

Возвращает объект действия CAPTCHA.

caseSensitive свойство

public boolean $caseSensitive;

указывает, чувствителен ли сравнение к регистру. По умолчанию false.

Подробное описание методов

clientValidateAttribute() метод (доступен с версии v1.1.7)

public string clientValidateAttribute(CModel $object, string $attribute)
$object CModel валидируемый объект данных
$attribute строка имя атрибута для валидации.
{return} строка скрипт валидации на стороне клиента.
Исходный код: framework/validators/CCaptchaValidator.php#91 (показать)
public function clientValidateAttribute($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;
}

Возвращает JavaScript, необходимый для валидации на стороне клиента.

См. также

  • CActiveForm::enableClientValidation

getCaptchaAction() метод (доступен с версии v1.1.7)

protected CCaptchaAction getCaptchaAction()
{return} CCaptchaAction объект действия
Исходный код: framework/validators/CCaptchaValidator.php#64 (показать)
protected function getCaptchaAction()
{
    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 new 
CException(Yii::t('yii','CCaptchaValidator.action "{id}" is invalid. Unable to find such an action in the current controller.',
                    array(
'{id}'=>$this->captchaAction)));
    }
    return 
$captcha;
}

Возвращает объект действия CAPTCHA.

validateAttribute() метод

protected void validateAttribute(CModel $object, string $attribute)
$object CModel валидируемый объект
$attribute строка валидируемый атрибут
Исходный код: framework/validators/CCaptchaValidator.php#44 (показать)
protected function validateAttribute($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/1955
    
if(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);
    }
}

Валидирует атрибут объекта. Если ошибка возникает, сообщение об ошибке добавляется к объекту.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CCaptchaValidator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API