Spec-Zone.ru › Yii 1.1

CValidator

Пакет system.validators
Наследование абстрактный класс CValidator » CComponent
Подклассы CBooleanValidator, CCaptchaValidator, CCompareValidator, CDateValidator, CDefaultValueValidator, CEmailValidator, CExistValidator, CFileValidator, CFilterValidator, CInlineValidator, CNumberValidator, CRangeValidator, CRegularExpressionValidator, CRequiredValidator, CSafeValidator, CStringValidator, CTypeValidator, CUniqueValidator, CUnsafeValidator, CUrlValidator
С момента 1.0
Исходный код framework/validators/CValidator.php
CValidator — базовый класс для всех валидаторов.

Подклассы должны реализовать метод validateAttribute.

При использовании 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 массив список атрибутов для проверки. CValidator
builtInValidators массив список встроенных валидаторов (имя=>класс) CValidator
enableClientValidation boolean выполнять ли проверку на стороне клиента. CValidator
except массив список сценариев, к которым не должна применяться проверка. CValidator
message строка пользовательское сообщение об ошибке. CValidator
on массив список сценариев, к которым должна применяться проверка. CValidator
safe boolean являются ли атрибуты, указанные с этим валидатором, безопасными для массового назначения. CValidator
skipOnError boolean пропустить ли эту проверку, если уже есть ошибка проверки для текущего атрибута. 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() Возвращает JavaScript, необходимый для проверки на стороне клиента. CValidator
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() Проверяет один атрибут. CValidator

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

attributes свойство

public array $attributes;

список атрибутов, которые нужно проверить.

builtInValidators свойство

public static array $builtInValidators;

список встроенных валидаторов (имя=>класс)

enableClientValidation свойство (доступно начиная с v1.1.7)

public boolean $enableClientValidation;

выполнять ли проверку на стороне клиента. По умолчанию true. Подробнее о проверке на стороне клиента см. CActiveForm::enableClientValidation.

except свойство (доступно начиная с v1.1.11)

public array $except;

список сценариев, к которым валидатор не должен применяться. Каждое значение массива — имя сценария, совпадающее с именем его ключа.

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#248 (показать)
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#233 (показать)
public function applyTo($scenario)
{
    if(isset(
$this->except[$scenario]))
        return 
false;
    return empty(
$this->on) || isset($this->on[$scenario]);
}

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

  • свойство "on" валидатора пустое
  • свойство "on" валидатора содержит указанный сценарий

clientValidateAttribute() метод (доступно начиная с v1.1.7)

public string clientValidateAttribute(CModel $object, string $attribute)
$object CModel валидируемый объект данных
$attribute string имя атрибута, подлежащего проверке.
{return} string скрипт проверки на стороне клиента. Null, если валидатор не поддерживает проверку на стороне клиента.
Исходный код: framework/validators/CValidator.php#219 (показать)
public function clientValidateAttribute($object,$attribute)
{
}

Возвращает JavaScript, необходимый для выполнения проверки на стороне клиента. Не переопределяйте этот метод, если валидатор не поддерживает проверку на стороне клиента. Можно использовать две предопределённые переменные JavaScript:

  • value: значение, которое необходимо проверить
  • messages: массив, используемый для хранения сообщений об ошибках проверки для значения

См. также

  • CActiveForm::enableClientValidation

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#129 (показать)
public static function createValidator($name,$object,$attributes,$params=array())
{
    if(
is_string($attributes))
        
$attributes=preg_split('/\s*,\s*/',trim($attributes, " \t\n\r\0\x0B,"),-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(isset(
$params['except']))
    {
        if(
is_array($params['except']))
            
$except=$params['except'];
        else
            
$except=preg_split('/[\s,]+/',$params['except'],-1,PREG_SPLIT_NO_EMPTY);
    }
    else
        
$except=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);
    
$validator->except=empty($except) ? array() : array_combine($except,$except);

    return 
$validator;
}

Создаёт объект валидатора.

isEmpty() метод

protected boolean isEmpty(mixed $value, boolean $trim=false)
$value mixed значение, которое необходимо проверить
$trim boolean обрезать ли строку перед проверкой на пустоту. По умолчанию false.
{return} boolean является ли значение пустым
Исходный код: framework/validators/CValidator.php#262 (показать)
protected function isEmpty($value,$trim=false)
{
    return 
$value===null || $value===array() || $value==='' || $trim && is_scalar($value) && trim($value)==='';
}

Проверяет, является ли заданное значение пустым. Значение считается пустым, если оно равно null, пустой массив или обрезанный результат — пустая строка. Обратите внимание, что этот метод отличается от PHP empty(). Он вернёт false для значения 0.

validate() метод

public void validate(CModel $object, array $attributes=NULL)
$object CModel валидируемый объект данных
$attributes array список атрибутов, подлежащих проверке. По умолчанию null, что означает, что все атрибуты, перечисленные в attributes, будут проверены.
Исходный код: framework/validators/CValidator.php#192 (показать)
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#117 (показать)
abstract protected function validateAttribute($object,$attribute);

Проверяет один атрибут. Этот метод должен быть переопределён дочерними классами.

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

Spec-Zone.ru

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