Spec-Zone.ru › Yii 1.1

CTypeValidator

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

Поддерживаются следующие типы данных:
  • 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 строка валидируемый атрибут
Исходный код: framework/validators/CTypeValidator.php#90 (показать)
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} булево является ли значение допустимым
Исходный код: framework/validators/CTypeValidator.php#111 (показать)
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

Spec-Zone.ru

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