CTypeValidator
| Пакет | system.validators |
|---|---|
| Наследование | класс CTypeValidator » CValidator » CComponent |
| С версии | 1.0 |
| Исходный код | framework/validators/CTypeValidator.php |
Поддерживаются следующие типы данных:
- integer Целое 32-битное число со знаком.
- float Число с плавающей точкой двойной точности.
- string Строковый тип.
- array Массив.
- date Дата.
- time Время.
- datetime Дата и время.
Для типа date будет использовано свойство dateFormat для определения способа парсинга строки даты. Если заданное значение даты не соответствует формату, атрибут считается некорректным.
Начиная с версии 1.1.7, существует специализированный валидатор дат CDateValidator. Рекомендуется использовать этот валидатор для проверки значений типа дата.
При использовании свойства message для определения пользовательского сообщения об ошибке, сообщение может содержать дополнительные заполнитель, которые будут заменены фактическим содержимым. Помимо заполнитель {attribute}, распознаваемого всеми валидаторами (см. CValidator), CTypeValidator допускает использование следующих заполнителей:
- {type}: заменяется типом данных, который должен иметь атрибут type.
Свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| allowEmpty | boolean | разрешает значение атрибута быть null или пустым. | CTypeValidator |
| attributes | array | список атрибутов, подлежащих валидации. | CValidator |
| builtInValidators | array | список встроенных валидаторов (имя=>класс) | CValidator |
| dateFormat | string | формат, которому должно соответствовать значение даты. | CTypeValidator |
| datetimeFormat | string | формат, которому должно соответствовать значение даты и времени. | CTypeValidator |
| enableClientValidation | boolean | выполнять ли валидацию на стороне клиента. | CValidator |
| except | array | список сценариев, для которых валидатор не должен применяться. | CValidator |
| message | string | пользовательское сообщение об ошибке. | CValidator |
| on | array | список сценариев, для которых валидатор должен применяться. | CValidator |
| safe | boolean | являются ли атрибуты, указанные с этим валидатором, безопасными для массового назначения. | CValidator |
| skipOnError | boolean | пропускать ли эту проверку при наличии ошибки валидации текущего атрибута. | CValidator |
| strict | boolean | проверять ли фактический PHP тип значения атрибута. | CTypeValidator |
| timeFormat | string | формат, которому должно соответствовать значение времени. | CTypeValidator |
| type | string | тип данных, которому должен соответствовать атрибут. | CTypeValidator |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __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 |
| validateValue() | Проверяет статическое значение. | CTypeValidator |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| addError() | Добавляет ошибку об указанном атрибуте в активную запись. | CValidator |
| isEmpty() | Проверяет, является ли данное значение пустым. | CValidator |
| validateAttribute() | Проверяет атрибут объекта. | CTypeValidator |
Подробное описание свойств
allowEmpty свойство
public boolean $allowEmpty;
указывает, может ли значение атрибута быть null или пустым. По умолчанию true, что означает, что если атрибут пуст, он считается допустимым.
dateFormat свойство
public string $dateFormat;
шаблон формата, которому должно соответствовать значение даты. По умолчанию 'MM/dd/yyyy'. Подробности о том, как указать формат даты, см. в CDateTimeParser. Это свойство эффективно только тогда, когда тип равен 'date'.
datetimeFormat свойство
public string $datetimeFormat;
шаблон формата, которому должно соответствовать значение даты и времени. По умолчанию 'MM/dd/yyyy hh:mm'. Подробности о том, как указать формат даты и времени, см. в CDateTimeParser. Это свойство эффективно только тогда, когда тип равен 'datetime'.
strict свойство (доступно начиная с версии v1.1.13)
public boolean $strict;
указывает, следует ли проверять фактический PHP-тип значения атрибута. По умолчанию false, что означает, что правильно отформатированные строки принимаются для валидаторов целых чисел и чисел с плавающей точкой.
timeFormat свойство
public string $timeFormat;
шаблон формата, которому должно соответствовать значение времени. По умолчанию 'hh:mm'. Подробности о том, как указать формат времени, см. в CDateTimeParser. Это свойство эффективно только тогда, когда тип равен 'time'.
type свойство
public string $type;
тип данных, которому должен соответствовать атрибут. По умолчанию 'string'. Допустимые значения включают 'string', 'integer', 'float', 'array', 'date', 'time' и 'datetime'.
Подробное описание методов
validateAttribute() метод
protected void validateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект |
| $attribute | строка | валидируемый атрибут |
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
if(!$this->validateValue($value))
{
$message=$this->message!==null?$this->message : Yii::t('yii','{attribute} must be {type}.');
$this->addError($object,$attribute,$message,array('{type}'=>$this->type));
}
}
Проверяет атрибут объекта. Если есть ошибка, сообщение об ошибке добавляется к объекту.
validateValue() метод (доступно начиная с v1.1.13)
public boolean validateValue(mixed $value) | ||
| $value | смешанный | валидируемое значение |
| {return} | булево | является ли значение допустимым |
public function validateValue($value)
{
$type=$this->type==='float' ? 'double' : $this->type;
if($type===gettype($value))
return true;
elseif($this->strict || is_array($value) || is_object($value) || is_resource($value) || is_bool($value))
return false;
if($type==='integer')
return (boolean)preg_match('/^[-+]?[0-9]+$/',trim($value));
elseif($type==='double')
return (boolean)preg_match('/^[-+]?([0-9]*\.)?[0-9]+([eE][-+]?[0-9]+)?$/',trim($value));
elseif($type==='date')
return CDateTimeParser::parse($value,$this->dateFormat,array('month'=>1,'day'=>1,'hour'=>0,'minute'=>0,'second'=>0))!==false;
elseif($type==='time')
return CDateTimeParser::parse($value,$this->timeFormat)!==false;
elseif($type==='datetime')
return CDateTimeParser::parse($value,$this->datetimeFormat, array('month'=>1,'day'=>1,'hour'=>0,'minute'=>0,'second'=>0))!==false;
return false;
}
Проверяет статическое значение. Обратите внимание, что этот метод не учитывает свойство allowEmpty. Этот метод предоставлен для того, чтобы вы могли вызывать его напрямую, не проходя через механизм проверки правил модели.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CTypeValidator