CCompareValidator
| Пакет | system.validators |
|---|---|
| Наследование | класс CCompareValidator » CValidator » CComponent |
| С момента | 1.0 |
| Исходный код | framework/validators/CCompareValidator.php |
CCompareValidator сравнивает значение указанного атрибута с другим значением и проверяет, равны ли они.
Сравниваемое значение может быть другим значением атрибута (указанным через compareAttribute) или константой (указанной через compareValue). Когда оба значения указаны, приоритет отдаётся второму. Если ни одно из них не указано, атрибут будет сравниваться с другим атрибутом, имя которого получено добавлением "_repeat" к имени исходного атрибута.
Сравнение может быть строгим (strict) или нестрогим.
CCompareValidator поддерживает различные операторы сравнения. Ранее он только сравнивал, равны ли два значения или нет.
При использовании свойства message для определения пользовательского сообщения об ошибке, сообщение может содержать дополнительные плейсхолдеры, которые будут заменены фактическим содержимым. В дополнение к плейсхолдеру "{attribute}", распознаваемому всеми валидаторами (см. CValidator), CCompareValidator позволяет указать следующие плейсхолдеры:
Сравниваемое значение может быть другим значением атрибута (указанным через compareAttribute) или константой (указанной через compareValue). Когда оба значения указаны, приоритет отдаётся второму. Если ни одно из них не указано, атрибут будет сравниваться с другим атрибутом, имя которого получено добавлением "_repeat" к имени исходного атрибута.
Сравнение может быть строгим (strict) или нестрогим.
CCompareValidator поддерживает различные операторы сравнения. Ранее он только сравнивал, равны ли два значения или нет.
При использовании свойства message для определения пользовательского сообщения об ошибке, сообщение может содержать дополнительные плейсхолдеры, которые будут заменены фактическим содержимым. В дополнение к плейсхолдеру "{attribute}", распознаваемому всеми валидаторами (см. CValidator), CCompareValidator позволяет указать следующие плейсхолдеры:
- {compareValue}: заменяется постоянным значением для сравнения (compareValue).
- {compareAttribute}: заменяется меткой атрибута, с которым сравнивается (compareAttribute).
Общественные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| allowEmpty | boolean | указывает, может ли значение атрибута быть null или пустым. | CCompareValidator |
| attributes | массив | список атрибутов, подлежащих валидации. | CValidator |
| builtInValidators | массив | список встроенных валидаторов (имя=>класс) | CValidator |
| compareAttribute | строка | имя атрибута, с которым следует сравнить | CCompareValidator |
| compareValue | строка | постоянное значение для сравнения | CCompareValidator |
| enableClientValidation | boolean | выполнять ли проверку на стороне клиента. | CValidator |
| except | массив | список сценариев, для которых валидатор не должен применяться. | CValidator |
| message | строка | пользовательское сообщение об ошибке. | CValidator |
| on | массив | список сценариев, для которых валидатор должен применяться. | CValidator |
| operator | строка | оператор для сравнения. | CCompareValidator |
| safe | boolean | указывает, следует ли считать атрибуты, указанные с этим валидатором, безопасными для массового назначения. | CValidator |
| skipOnError | boolean | пропустить ли эту проверку, если для текущего атрибута уже есть ошибка проверки. | CValidator |
| strict | boolean | указывает, является ли сравнение строгим (и значение, и тип должны совпадать). | CCompareValidator |
Общественные методы
| Метод | Описание | Определено |
|---|---|---|
| __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, необходимый для выполнения проверки на стороне клиента. | CCompareValidator |
| 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 |
| isEmpty() | Проверяет, является ли заданное значение пустым. | CValidator |
| validateAttribute() | Проверяет атрибут объекта. | CCompareValidator |
Подробное описание свойств
allowEmpty свойство
public boolean $allowEmpty;
указывает, может ли значение атрибута быть нулевым или пустым. По умолчанию — false. Если значение true, атрибут считается валидным, когда он пустой.
compareAttribute свойство
public string $compareAttribute;
имя атрибута, с которым следует сравнить.
compareValue свойство
public string $compareValue;
постоянное значение для сравнения.
operator свойство
public string $operator;
оператор для сравнения. По умолчанию — '='. Допустимые операторы:
- '=' или '==': проверяет, равны ли два значения. Если strict — true, сравнение выполняется в строгом режиме (т. е. проверяется и тип значения).
- '!=': проверяет, не равны ли два значения. Если strict — true, сравнение выполняется в строгом режиме (т. е. проверяется и тип значения).
- '>': проверяет, больше ли проверяемое значение значения для сравнения.
- '>=': проверяет, больше или равно ли проверяемое значение значению для сравнения.
- '<': проверяет, меньше ли проверяемое значение значения для сравнения.
- '<=': проверяет, меньше или равно ли проверяемое значение значению для сравнения.
strict свойство
public boolean $strict;
указывает, является ли сравнение строгим (должны совпадать и значение, и тип). По умолчанию — false.
Подробное описание методов
clientValidateAttribute() метод (доступен с версии v1.1.7)
public string clientValidateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект данных |
| $attribute | string | имя атрибута для проверки. |
| {return} | string | скрипт проверки на стороне клиента. |
Исходный код: framework/validators/CCompareValidator.php#139 (показать)
public function clientValidateAttribute($object,$attribute)
{
if($this->compareValue !== null)
{
$compareTo=$this->compareValue;
$compareValue=CJSON::encode($this->compareValue);
}
else
{
$compareAttribute=$this->compareAttribute === null ? $attribute . '_repeat' : $this->compareAttribute;
$compareValue="jQuery('#" . (CHtml::activeId($object, $compareAttribute)) . "').val()";
$compareTo=$object->getAttributeLabel($compareAttribute);
}
$message=$this->message;
switch($this->operator)
{
case '=':
case '==':
if($message===null)
$message=Yii::t('yii','{attribute} must be repeated exactly.');
$condition='value!='.$compareValue;
break;
case '!=':
if($message===null)
$message=Yii::t('yii','{attribute} must not be equal to "{compareValue}".');
$condition='value=='.$compareValue;
break;
case '>':
if($message===null)
$message=Yii::t('yii','{attribute} must be greater than "{compareValue}".');
$condition='parseFloat(value)<=parseFloat('.$compareValue.')';
break;
case '>=':
if($message===null)
$message=Yii::t('yii','{attribute} must be greater than or equal to "{compareValue}".');
$condition='parseFloat(value)<parseFloat('.$compareValue.')';
break;
case '<':
if($message===null)
$message=Yii::t('yii','{attribute} must be less than "{compareValue}".');
$condition='parseFloat(value)>=parseFloat('.$compareValue.')';
break;
case '<=':
if($message===null)
$message=Yii::t('yii','{attribute} must be less than or equal to "{compareValue}".');
$condition='parseFloat(value)>parseFloat('.$compareValue.')';
break;
default:
throw new CException(Yii::t('yii','Invalid operator "{operator}".',array('{operator}'=>$this->operator)));
}
$message=strtr($message,array(
'{attribute}'=>$object->getAttributeLabel($attribute),
'{compareAttribute}'=>$compareTo,
));
return "
if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '').$condition.") {
messages.push(".CJSON::encode($message).".replace('{compareValue}', ".$compareValue."));
}
";
}
Возвращает JavaScript-код, необходимый для проверки на стороне клиента.
См. также
validateAttribute() метод
protected void validateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект |
| $attribute | string | валидируемый атрибут |
Исходный код: framework/validators/CCompareValidator.php#82 (показать)
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
if($this->compareValue!==null)
$compareTo=$compareValue=$this->compareValue;
else
{
$compareAttribute=$this->compareAttribute===null ? $attribute.'_repeat' : $this->compareAttribute;
$compareValue=$object->$compareAttribute;
$compareTo=$object->getAttributeLabel($compareAttribute);
}
switch($this->operator)
{
case '=':
case '==':
if(($this->strict && $value!==$compareValue) || (!$this->strict && $value!=$compareValue))
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be repeated exactly.');
break;
case '!=':
if(($this->strict && $value===$compareValue) || (!$this->strict && $value==$compareValue))
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must not be equal to "{compareValue}".');
break;
case '>':
if($value<=$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be greater than "{compareValue}".');
break;
case '>=':
if($value<$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be greater than or equal to "{compareValue}".');
break;
case '<':
if($value>=$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be less than "{compareValue}".');
break;
case '<=':
if($value>$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be less than or equal to "{compareValue}".');
break;
default:
throw new CException(Yii::t('yii','Invalid operator "{operator}".',array('{operator}'=>$this->operator)));
}
if(!empty($message))
$this->addError($object,$attribute,$message,array('{compareAttribute}'=>$compareTo,'{compareValue}'=>$compareValue));
}
Проверяет атрибут объекта. Если обнаружена ошибка, сообщение об ошибке добавляется к объекту.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CCompareValidator