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 |
Подклассы должны реализовать метод 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 | значения для плейсхолдеров в сообщении об ошибке |
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 | применяется ли валидатор к указанному сценарию. |
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, если валидатор не поддерживает проверку на стороне клиента. |
public function clientValidateAttribute($object,$attribute)
{
}
Возвращает JavaScript, необходимый для выполнения проверки на стороне клиента. Не переопределяйте этот метод, если валидатор не поддерживает проверку на стороне клиента. Можно использовать две предопределённые переменные JavaScript:
- value: значение, которое необходимо проверить
- messages: массив, используемый для хранения сообщений об ошибках проверки для значения
См. также
createValidator() метод
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*,\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 | является ли значение пустым |
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, будут проверены. |
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 | имя атрибута, подлежащего проверке. |
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