CExistValidator
| Пакет | system.validators |
|---|---|
| Наследование | класс CExistValidator » CValidator » CComponent |
| Исходный код | framework/validators/CExistValidator.php |
Этот валидатор часто используется для проверки того, содержит ли внешний ключ значение, которое можно найти во внешней таблице.
При использовании свойства 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, что означает использование имени атрибута, подлежащего валидации.
См. также
caseSensitive свойство
public boolean $caseSensitive;
указывает, является ли сравнение чувствительным к регистру. По умолчанию равно true. Обратите внимание, установив значение false, вы предполагаете, что тип атрибута — строка.
className свойство
public string $className;
имя класса ActiveRecord, которое должно использоваться для поиска значения атрибута, подлежащего валидации. По умолчанию равно null, что означает использование класса ActiveRecord атрибута, подлежащего валидации. Вы можете использовать псевдоним пути для ссылки на имя класса здесь.
См. также
criteria свойство
public mixed $criteria;
дополнительные критерии запроса. Может быть массивом или объектом CDbCriteria. Это будет комбинировано с условием, проверяющим, существует ли значение атрибута в соответствующем столбце таблицы. Этот массив будет использован для создания объекта CDbCriteria.
Подробное описание методов
getModel() метод (доступен с версии v1.1.14)
protected CActiveRecord getModel(string $className) | ||
| $className | string | имя класса активной записи. |
| {return} | CActiveRecord | экземпляр модели активной записи. |
protected function getModel($className)
{
return CActiveRecord::model($className);
}
Возвращает новый экземпляр модели, заданный именем класса активной записи.
validateAttribute() метод
protected void validateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект |
| $attribute | string | валидируемый атрибут |
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