Spec-Zone.ru › Yii 1.1

CExistValidator

Пакет system.validators
Наследование класс CExistValidator » CValidator » CComponent
Исходный код framework/validators/CExistValidator.php
CExistValidator проверяет, существует ли значение атрибута в таблице.

Этот валидатор часто используется для проверки того, содержит ли внешний ключ значение, которое можно найти во внешней таблице.

При использовании свойства message для определения пользовательского сообщения об ошибке, сообщение может содержать дополнительные заполнитель, которые будут заменены фактическим содержимым. В дополнение к заполнителью "{attribute}", распознаваемому всеми валидаторами (см. CValidator), CExistValidator позволяет указывать следующие заполнитель:
  • {value}: заменяется значением атрибута.

Свойства

Свойство Тип Описание Определено в
allowEmpty boolean можно ли атрибуту иметь значение null или пустое. CExistValidator
attributeName string имя атрибута класса ActiveRecord, которое должно использоваться для поиска значения атрибута, подлежащего валидации. CExistValidator
attributes array список атрибутов для проверки. CValidator
builtInValidators array список встроенных валидаторов (имя=>класс) CValidator
caseSensitive boolean является ли сравнение чувствительным к регистру. CExistValidator
className string имя класса ActiveRecord, которое должно использоваться для поиска значения атрибута, подлежащего валидации. CExistValidator
criteria mixed дополнительные критерии запроса. CExistValidator
enableClientValidation boolean выполнять ли проверку на стороне клиента. CValidator
except array список сценариев, к которым валидатор не должен применяться. CValidator
message string пользовательское сообщение об ошибке. CValidator
on array список сценариев, к которым должен применяться валидатор. 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
getModel() Для данного имени класса активной записи возвращает новый экземпляр модели. CExistValidator
isEmpty() Проверяет, пусто ли данное значение. CValidator
validateAttribute() Проверяет атрибут объекта. CExistValidator

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

allowEmpty свойство

public boolean $allowEmpty;

указывает, может ли значение атрибута быть null или пустым. По умолчанию равно true, что означает, что если атрибут пуст, он считается допустимым.

attributeName свойство

public string $attributeName;

имя атрибута класса ActiveRecord, которое должно использоваться для поиска значения атрибута, подлежащего валидации. По умолчанию равно null, что означает использование имени атрибута, подлежащего валидации.

См. также

  • className

caseSensitive свойство

public boolean $caseSensitive;

указывает, является ли сравнение чувствительным к регистру. По умолчанию равно true. Обратите внимание, установив значение false, вы предполагаете, что тип атрибута — строка.

className свойство

public string $className;

имя класса ActiveRecord, которое должно использоваться для поиска значения атрибута, подлежащего валидации. По умолчанию равно null, что означает использование класса ActiveRecord атрибута, подлежащего валидации. Вы можете использовать псевдоним пути для ссылки на имя класса здесь.

См. также

  • attributeName

criteria свойство

public mixed $criteria;

дополнительные критерии запроса. Может быть массивом или объектом CDbCriteria. Это будет комбинировано с условием, проверяющим, существует ли значение атрибута в соответствующем столбце таблицы. Этот массив будет использован для создания объекта CDbCriteria.

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

getModel() метод (доступен с версии v1.1.14)

protected CActiveRecord getModel(string $className)
$className string имя класса активной записи.
{return} CActiveRecord экземпляр модели активной записи.
Исходный код: framework/validators/CExistValidator.php#115 (показать)
protected function getModel($className)
{
    return 
CActiveRecord::model($className);
}

Возвращает новый экземпляр модели, заданный именем класса активной записи.

validateAttribute() метод

protected void validateAttribute(CModel $object, string $attribute)
$object CModel валидируемый объект
$attribute string валидируемый атрибут
Исходный код: framework/validators/CExistValidator.php#70 (показать)
protected function validateAttribute($object,$attribute)
{
    
$value=$object->$attribute;
    if(
$this->allowEmpty && $this->isEmpty($value))
        return;

    if(
is_array($value))
    {
        
// https://github.com/yiisoft/yii/issues/1955
        
$this->addError($object,$attribute,Yii::t('yii','{attribute} is invalid.'));
        return;
    }

    
$className=$this->className===null?get_class($object):Yii::import($this->className);
    
$attributeName=$this->attributeName===null?$attribute:$this->attributeName;
    
$finder=$this->getModel($className);
    
$table=$finder->getTableSchema();
    if((
$column=$table->getColumn($attributeName))===null)
        throw new 
CException(Yii::t('yii','Table "{table}" does not have a column named "{column}".',
            array(
'{column}'=>$attributeName,'{table}'=>$table->name)));

    
$columnName=$column->rawName;
    
$criteria=new CDbCriteria();
    if(
$this->criteria!==array())
        
$criteria->mergeWith($this->criteria);
    
$tableAlias = empty($criteria->alias) ? $finder->getTableAlias(true) : $criteria->alias;
    
$valueParamName = CDbCriteria::PARAM_PREFIX.CDbCriteria::$paramCount++;
    
$criteria->addCondition($this->caseSensitive ? "{$tableAlias}.{$columnName}={$valueParamName}" : "LOWER({$tableAlias}.{$columnName})=LOWER({$valueParamName})");
    
$criteria->params[$valueParamName] = $value;

    if(!
$finder->exists($criteria))
    {
        
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} "{value}" is invalid.');
        
$this->addError($object,$attribute,$message,array('{value}'=>$value));
    }
}

Валидирует атрибут объекта. Если ошибка возникает, сообщение об ошибке добавляется к объекту.

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

Spec-Zone.ru

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