Spec-Zone.ru › Yii 1.1

CModel

Package system.base
Inheritance abstract class CModel » CComponent
Implements IteratorAggregate, Traversable, ArrayAccess
Subclasses CActiveRecord, CFormModel
Since 1.0
Source Code framework/base/CModel.php
CModel — базовый класс, предоставляющий общие возможности, необходимые для объектов модели данных.

CModel определяет базовый каркас для моделей данных, которые необходимо валидировать.

Public Properties

Property Type Description Defined By
attributes array Возвращает все значения атрибутов. CModel
errors array Возвращает ошибки для всех атрибутов или одного атрибута. CModel
iterator CMapIterator Возвращает итератор для обхода атрибутов в модели. CModel
safeAttributeNames array Возвращает имена атрибутов, которые безопасно массово назначать. CModel
scenario string Возвращает сценарий, в котором используется эта модель. CModel
validatorList CList Возвращает все валидаторы, объявленные в модели. CModel
validators array Возвращает валидаторы, применимые к текущему сценарию. CModel

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение в зависимости от его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
addError() Добавляет новую ошибку к указанному атрибуту. CModel
addErrors() Добавляет список ошибок. CModel
asa() Возвращает объект именованного поведения. CComponent
attachBehavior() Прикрепляет поведение к данному компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
attributeLabels() Возвращает метки атрибутов. CModel
attributeNames() Возвращает список имён атрибутов модели. CModel
behaviors() Возвращает список поведений, которые должна иметь эта модель. CModel
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
clearErrors() Удаляет ошибки для всех атрибутов или для отдельного атрибута. CModel
createValidators() Создаёт объекты валидаторов на основе спецификаций в rules. CModel
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик событий. CComponent
disableBehavior() Отключает прикреплённое поведение. CComponent
disableBehaviors() Отключает все прикрепленные поведения к данному компоненту. CComponent
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные поведения к данному компоненту. CComponent
evaluateExpression() Вычисляет PHP-выражение или обратный вызов в контексте данного компонента. CComponent
generateAttributeLabel() Генерирует удобную для пользователя метку атрибута. CModel
getAttributeLabel() Возвращает текстовую метку для указанного атрибута. CModel
getAttributes() Возвращает все значения атрибутов. CModel
getError() Возвращает первую ошибку указанного атрибута. CModel
getErrors() Возвращает ошибки для всех атрибутов или одного атрибута. CModel
getEventHandlers() Возвращает список прикреплённых обработчиков событий для события. CComponent
getIterator() Возвращает итератор для обхода атрибутов в модели. CModel
getSafeAttributeNames() Возвращает имена атрибутов, которые безопасны для массового присваивания. CModel
getScenario() Возвращает сценарий, в котором используется эта модель. CModel
getValidatorList() Возвращает все валидаторы, объявленные в модели. CModel
getValidators() Возвращает валидаторы, применимые к текущему сценарию. CModel
hasErrors() Возвращает значение, указывающее, есть ли ошибки валидации. CModel
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики для заданного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
isAttributeRequired() Возвращает значение, указывающее, является ли атрибут обязательным. CModel
isAttributeSafe() Возвращает значение, указывающее, безопасен ли атрибут для массового присваивания. CModel
offsetExists() Возвращает, существует ли элемент по указанному смещению. CModel
offsetGet() Возвращает элемент по указанному смещению. CModel
offsetSet() Устанавливает элемент по указанному смещению. CModel
offsetUnset() Удаляет элемент по указанному смещению. CModel
onAfterConstruct() Это событие срабатывает после создания экземпляра модели оператором new. CModel
onAfterValidate() Это событие срабатывает после выполнения валидации. CModel
onBeforeValidate() Это событие срабатывает перед выполнением валидации. CModel
onUnsafeAttribute() Этот метод вызывается, когда небезопасный атрибут присваивается массово. CModel
raiseEvent() Вызывает событие. CComponent
rules() Возвращает правила валидации для атрибутов. CModel
setAttributes() Устанавливает значения атрибутов массовым способом. CModel
setScenario() Устанавливает сценарий для модели. CModel
unsetAttributes() Устанавливает атрибуты в значение null. CModel
validate() Выполняет валидацию. CModel

Защищённые методы

Метод Описание Определено в
afterConstruct() Этот метод вызывается после создания экземпляра модели оператором new. CModel
afterValidate() Этот метод вызывается после завершения валидации. CModel
beforeValidate() Этот метод вызывается перед началом валидации. CModel

События

Событие Описание Определено в
onAfterConstruct Это событие срабатывает после создания экземпляра модели оператором new. CModel
onBeforeValidate Это событие срабатывает перед выполнением валидации. CModel
onAfterValidate Это событие срабатывает после выполнения валидации. CModel
onUnsafeAttribute Этот метод вызывается при массовом присваивании небезопасного атрибута. CModel

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

attributes свойство

public array getAttributes(array $names=NULL)
public void setAttributes(array $values, boolean $safeOnly=true)

Возвращает все значения атрибутов.

errors свойство только для чтения

public array getErrors(string $attribute=NULL)

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

iterator свойство только для чтения

public CMapIterator getIterator()

Возвращает итератор для обхода атрибутов в модели. Этот метод требуется интерфейсом IteratorAggregate.

safeAttributeNames свойство только для чтения

public array getSafeAttributeNames()

Возвращает имена атрибутов, которые можно безопасно присваивать массово. Безопасный атрибут — это атрибут, связанный с правилом валидации в текущем сценарии.

scenario свойство

public string getScenario()
public void setScenario(string $value)

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

Сценарий влияет на то, как выполняется валидация и какие атрибуты можно присваивать массово.

Правило валидации будет выполнено при вызове validate(), если значение «except» не содержит текущее значение сценария, в то время как значение «on» не установлено или содержит текущее значение сценария.

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

validatorList свойство только для чтения (доступно с v1.1.2)

public CList getValidatorList()

Возвращает все валидаторы, объявленные в модели. Этот метод отличается от getValidators тем, что последний возвращает только валидаторы, применимые к текущему сценарию. Кроме того, так как этот метод возвращает объект CList, вы можете манипулировать им, вставляя или удаляя валидаторы (полезно в поведении). Например, $model->validatorList->add($newValidator). Внесённые изменения в объект CList сохранятся и будут отражены в результате следующего вызова getValidators.

validators свойство только для чтения

public array getValidators(string $attribute=NULL)

Возвращает валидаторы, применимые к текущему сценарию.

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

addError() метод

public void addError(string $attribute, string $error)
$attribute string имя атрибута
$error string новое сообщение об ошибке
Исходный код: framework/base/CModel.php#381 (показать)
public function addError($attribute,$error)
{
    
$this->_errors[$attribute][]=$error;
}

Добавляет новую ошибку к указанному атрибуту.

addErrors() метод

public void addErrors(array $errors)
$errors array список ошибок. Ключи массива должны быть именами атрибутов. Значения массива должны быть сообщениями об ошибках. Если у атрибута есть несколько ошибок, эти ошибки должны быть представлены в виде массива. Вы можете использовать результат getErrors в качестве значения для этого параметра.
Исходный код: framework/base/CModel.php#393 (показать)
public function addErrors($errors)
{
    foreach(
$errors as $attribute=>$error)
    {
        if(
is_array($error))
        {
            foreach(
$error as $e)
                
$this->addError($attribute, $e);
        }
        else
            
$this->addError($attribute, $error);
    }
}

Добавляет список ошибок.

afterConstruct() метод

protected void afterConstruct()
Исходный код: framework/base/CModel.php#173 (показать)
protected function afterConstruct()
{
    if(
$this->hasEventHandler('onAfterConstruct'))
        
$this->onAfterConstruct(new CEvent($this));
}

Этот метод вызывается после создания экземпляра модели оператором new. Стандартная реализация вызывает событие onAfterConstruct. Вы можете переопределить этот метод, чтобы выполнить постобработку после создания модели. Убедитесь, что вы вызываете родительскую реализацию, чтобы событие было вызвано должным образом.

afterValidate() метод

protected void afterValidate()
Исходный код: framework/base/CModel.php#200 (показать)
protected function afterValidate()
{
    
$this->onAfterValidate(new CEvent($this));
}

Этот метод вызывается после завершения валидации. Стандартная реализация вызывает onAfterValidate для создания события. Вы можете переопределить этот метод, чтобы выполнить постобработку после валидации. Убедитесь, что вы вызываете родительскую реализацию, чтобы событие было вызвано.

attributeLabels() метод

public array attributeLabels()
{return} array метки атрибутов (имя=>метка)
Исходный код: framework/base/CModel.php#128 (показать)
public function attributeLabels()
{
    return array();
}

Возвращает метки атрибутов. Метки атрибутов используются в основном в сообщениях об ошибках валидации. По умолчанию метка атрибута генерируется с помощью generateAttributeLabel. Этот метод позволяет явно указать метки атрибутов.

Обратите внимание, что для наследования меток, определённых в родительском классе, дочерний класс должен объединить родительские метки с дочерними метками, используя функции, такие как array_merge().

См. также

  • generateAttributeLabel

attributeNames() метод

abstract public array attributeNames()
{return} array список имён атрибутов.
Исходный код: framework/base/CModel.php#39 (показать)
abstract public function attributeNames();

Возвращает список имён атрибутов модели.

beforeValidate() метод

protected boolean beforeValidate()
{return} boolean является ли выполнение валидации. По умолчанию равно true. Если возвращено false, валидация прекращается, и модель считается невалидной.
Исходный код: framework/base/CModel.php#187 (показать)
protected function beforeValidate()
{
    
$event=new CModelEvent($this);
    
$this->onBeforeValidate($event);
    return 
$event->isValid;
}

Этот метод вызывается перед началом валидации. Стандартная реализация вызывает onBeforeValidate, чтобы создать событие. Вы можете переопределить этот метод, чтобы выполнить предварительные проверки перед валидацией. Убедитесь, что вызывается родительская реализация, чтобы событие могло быть создано.

behaviors() метод

public array behaviors()
{return} array конфигурации поведения (имя поведения=>конфигурация поведения)
Исходный код: framework/base/CModel.php#111 (показать)
public function behaviors()
{
    return array();
}

Возвращает список поведений, которые должна иметь эта модель. Возвращаемое значение должно быть массивом конфигураций поведения, индексированных по именам поведения. Каждая конфигурация поведения может быть либо строкой, указывающей класс поведения, либо массивом следующей структуры:

'behaviorName'=>array(
    'class'=>'path.to.BehaviorClass',
    'property1'=>'value1',
    'property2'=>'value2',
)


Обратите внимание, что классы поведений должны реализовывать IBehavior или наследоваться от CBehavior. Поведения, объявленные в этом методе, будут присоединены к модели при её создании.

Для получения более подробной информации о поведении см. CComponent.

clearErrors() метод

public void clearErrors(string $attribute=NULL)
$attribute строка имя атрибута. Используйте null для удаления ошибок для всех атрибутов.
Исходный код: framework/base/CModel.php#411 (показать)
public function clearErrors($attribute=null)
{
    if(
$attribute===null)
        
$this->_errors=array();
    else
        unset(
$this->_errors[$attribute]);
}

Удаляет ошибки для всех атрибутов или одного атрибута.

createValidators() метод

public CList createValidators()
{return} CList валидаторы, созданные на основе rules().
Исходный код: framework/base/CModel.php#281 (показать)
public function createValidators()
{
    
$validators=new CList;
    foreach(
$this->rules() as $rule)
    {
        if(isset(
$rule[0],$rule[1]))  // attributes, validator name
            
$validators->add(CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2)));
        else
            throw new 
CException(Yii::t('yii','{class} has an invalid validation rule. The rule must specify attributes to be validated and the validator name.',
                array(
'{class}'=>get_class($this))));
    }
    return 
$validators;
}

Создает объекты валидаторов на основе спецификации в правилах. Этот метод в основном используется внутри.

generateAttributeLabel() метод

public string generateAttributeLabel(string $name)
$name строка имя столбца
{return} строка метка атрибута
Исходный код: framework/base/CModel.php#427 (показать)
public function generateAttributeLabel($name)
{
    return 
ucwords(trim(strtolower(str_replace(array('-','_','.'),' ',preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name)))));
}

Генерирует метку атрибута, удобную для пользователя. Это делается путем замены символов подчеркивания или дефисов пробелами и изменения первой буквы каждого слова на заглавную. Например, «department_name» или «DepartmentName» становится «Department Name».

getAttributeLabel() метод

public string getAttributeLabel(string $attribute)
$attribute строка имя атрибута
{return} строка метка атрибута
Исходный код: framework/base/CModel.php#331 (показать)
public function getAttributeLabel($attribute)
{
    
$labels=$this->attributeLabels();
    if(isset(
$labels[$attribute]))
        return 
$labels[$attribute];
    else
        return 
$this->generateAttributeLabel($attribute);
}

Возвращает текстовую метку для указанного атрибута.

См. также

  • generateAttributeLabel
  • attributeLabels

getAttributes() метод

public array getAttributes(array $names=NULL)
$names массив список атрибутов, значения которых необходимо вернуть. По умолчанию равно null, что означает, что будут возвращены все атрибуты, перечисленные в attributeNames. Если это массив, будут возвращены только атрибуты из массива.
{return} массив значения атрибутов (имя=>значение).
Исходный код: framework/base/CModel.php#439 (показать)
public function getAttributes($names=null)
{
    
$values=array();
    foreach(
$this->attributeNames() as $name)
        
$values[$name]=$this->$name;

    if(
is_array($names))
    {
        
$values2=array();
        foreach(
$names as $name)
            
$values2[$name]=isset($values[$name]) ? $values[$name] : null;
        return 
$values2;
    }
    else
        return 
$values;
}

Возвращает все значения атрибутов.

getError() метод

public string getError(string $attribute)
$attribute строка имя атрибута.
{return} строка сообщение об ошибке. Возвращает null, если ошибки нет.
Исходный код: framework/base/CModel.php#371 (показать)
public function getError($attribute)
{
    return isset(
$this->_errors[$attribute]) ? reset($this->_errors[$attribute]) : null;
}

Возвращает первую ошибку указанного атрибута.

getErrors() метод

public array getErrors(string $attribute=NULL)
$attribute строка имя атрибута. Используйте null для получения ошибок для всех атрибутов.
{return} массив ошибки для всех атрибутов или указанного атрибута. Возвращает пустой массив, если ошибок нет.
Исходный код: framework/base/CModel.php#358 (показать)
public function getErrors($attribute=null)
{
    if(
$attribute===null)
        return 
$this->_errors;
    else
        return isset(
$this->_errors[$attribute]) ? $this->_errors[$attribute] : array();
}

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

getIterator() метод

public CMapIterator getIterator()
{return} CMapIterator итератор для обхода элементов в списке.
Исходный код: framework/base/CModel.php#571 (показать)
public function getIterator()
{
    
$attributes=$this->getAttributes();
    return new 
CMapIterator($attributes);
}

Возвращает итератор для обхода атрибутов в модели. Этот метод требуется интерфейсом IteratorAggregate.

getSafeAttributeNames() метод

public array getSafeAttributeNames()
{return} массив безопасные имена атрибутов
Исходный код: framework/base/CModel.php#543 (показать)
public function getSafeAttributeNames()
{
    
$attributes=array();
    
$unsafe=array();
    foreach(
$this->getValidators() as $validator)
    {
        if(!
$validator->safe)
        {
            foreach(
$validator->attributes as $name)
                
$unsafe[]=$name;
        }
        else
        {
            foreach(
$validator->attributes as $name)
                
$attributes[$name]=true;
        }
    }

    foreach(
$unsafe as $name)
        unset(
$attributes[$name]);
    return 
array_keys($attributes);
}

Возвращает имена атрибутов, которые можно безопасно массово присваивать. Безопасный атрибут — это атрибут, связанный с правилом валидации в текущем сценарии.

getScenario() метод

public string getScenario()
{return} строка сценарий, в котором используется эта модель.
Исходный код: framework/base/CModel.php#523 (показать)
public function getScenario()
{
    return 
$this->_scenario;
}

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

Сценарий влияет на то, как выполняется валидация, и на то, какие атрибуты можно массово присваивать.

Правило валидации будет выполнено при вызове validate(), если значение «except» не содержит текущего значения сценария, а опция «on» не установлена или содержит текущее значение сценария.

Атрибут можно массово присвоить, если он связан с правилом валидации для текущего сценария. Обратите внимание, что исключением является валидатор unsafe, который отмечает связанные атрибуты как небезопасные и не допускающие массового присвоения.

getValidatorList() метод (доступен начиная с v1.1.2)

public CList getValidatorList()
{return} CList все валидаторы, объявленные в модели.
Исходный код: framework/base/CModel.php#244 (показать)
public function getValidatorList()
{
    if(
$this->_validators===null)
        
$this->_validators=$this->createValidators();
    return 
$this->_validators;
}

Возвращает все валидаторы, объявленные в модели. Этот метод отличается от getValidators тем, что последний возвращает только валидаторы, применимые к текущему сценарию. Кроме того, так как этот метод возвращает объект CList, вы можете его изменять, вставляя или удаляя валидаторы (что полезно в поведении). Например, $model->validatorList->add($newValidator). Изменения, внесенные в объект CList, сохранятся и будут отражены в результате следующего вызова getValidators.

getValidators() метод

public array getValidators(string $attribute=NULL)
$attribute строка имя атрибута, валидаторы которого необходимо вернуть. Если это null, будут возвращены валидаторы для ВСЕХ атрибутов модели.
{return} массив валидаторы, применимые к текущему сценарию.
Исходный код: framework/base/CModel.php#257 (показать)
public function getValidators($attribute=null)
{
    if(
$this->_validators===null)
        
$this->_validators=$this->createValidators();

    
$validators=array();
    
$scenario=$this->getScenario();
    foreach(
$this->_validators as $validator)
    {
        if(
$validator->applyTo($scenario))
        {
            if(
$attribute===null || in_array($attribute,$validator->attributes,true))
                
$validators[]=$validator;
        }
    }
    return 
$validators;
}

Возвращает валидаторы, применимые к текущему сценарию.

hasErrors() метод

public boolean hasErrors(string $attribute=NULL)
$attribute string имя атрибута. Используйте null для проверки всех атрибутов.
{return} boolean есть ли ошибка.
Исходный код: framework/base/CModel.php#345 (показать)
public function hasErrors($attribute=null)
{
    if(
$attribute===null)
        return 
$this->_errors!==array();
    else
        return isset(
$this->_errors[$attribute]);
}

Возвращает значение, указывающее, есть ли ошибка валидации.

isAttributeRequired() метод

public boolean isAttributeRequired(string $attribute)
$attribute string имя атрибута
{return} boolean требуется ли атрибут
Исходный код: framework/base/CModel.php#302 (показать)
public function isAttributeRequired($attribute)
{
    foreach(
$this->getValidators($attribute) as $validator)
    {
        if(
$validator instanceof CRequiredValidator)
            return 
true;
    }
    return 
false;
}

Возвращает значение, указывающее, требуется ли атрибут. Это определяется путем проверки, связан ли атрибут с правилом валидации CRequiredValidator в текущем сценарии.

isAttributeSafe() метод (доступен начиная с v1.1)

public boolean isAttributeSafe(string $attribute)
$attribute string имя атрибута
{return} boolean является ли атрибут безопасным для массовых назначений
Исходный код: framework/base/CModel.php#318 (показать)
public function isAttributeSafe($attribute)
{
    
$attributes=$this->getSafeAttributeNames();
    return 
in_array($attribute,$attributes);
}

Возвращает значение, указывающее, является ли атрибут безопасным для массовых назначений.

offsetExists() метод

public boolean offsetExists(mixed $offset)
$offset mixed офсет, который нужно проверить
{return} boolean
Исходный код: framework/base/CModel.php#583 (показать)
public function offsetExists($offset)
{
    return 
property_exists($this,$offset);
}

Возвращает, существует ли элемент по указанному офсету. Этот метод необходим для интерфейса ArrayAccess.

offsetGet() метод

public mixed offsetGet(integer $offset)
$offset integer офсет для получения элемента.
{return} mixed элемент по офсету, null, если элемент не найден по офсету
Исходный код: framework/base/CModel.php#594 (показать)
public function offsetGet($offset)
{
    return 
$this->$offset;
}

Возвращает элемент по указанному офсету. Этот метод необходим для интерфейса ArrayAccess.

offsetSet() метод

public void offsetSet(integer $offset, mixed $item)
$offset integer офсет для установки элемента
$item mixed значение элемента
Исходный код: framework/base/CModel.php#605 (показать)
public function offsetSet($offset,$item)
{
    
$this->$offset=$item;
}

Устанавливает элемент по указанному офсету. Этот метод необходим для интерфейса ArrayAccess.

offsetUnset() метод

public void offsetUnset(mixed $offset)
$offset mixed офсет для удаления элемента
Исходный код: framework/base/CModel.php#615 (показать)
public function offsetUnset($offset)
{
    unset(
$this->$offset);
}

Удаляет элемент по указанному офсету. Этот метод необходим для интерфейса ArrayAccess.

onAfterConstruct() метод

public void onAfterConstruct(CEvent $event)
$event CEvent параметр события
Исходный код: framework/base/CModel.php#209 (показать)
public function onAfterConstruct($event)
{
    
$this->raiseEvent('onAfterConstruct',$event);
}

Это событие срабатывает после создания экземпляра модели с помощью оператора new.

onAfterValidate() метод

public void onAfterValidate(CEvent $event)
$event CEvent параметр события
Исходный код: framework/base/CModel.php#227 (показать)
public function onAfterValidate($event)
{
    
$this->raiseEvent('onAfterValidate',$event);
}

Это событие срабатывает после выполнения валидации.

onBeforeValidate() метод

public void onBeforeValidate(CModelEvent $event)
$event CModelEvent параметр события
Исходный код: framework/base/CModel.php#218 (показать)
public function onBeforeValidate($event)
{
    
$this->raiseEvent('onBeforeValidate',$event);
}

Это событие срабатывает перед выполнением валидации.

onUnsafeAttribute() метод (доступен начиная с v1.1.1)

public void onUnsafeAttribute(string $name, mixed $value)
$name string имя небезопасного атрибута
$value mixed значение атрибута
Исходный код: framework/base/CModel.php#500 (показать)
public function onUnsafeAttribute($name,$value)
{
    if(
YII_DEBUG)
        
Yii::log(Yii::t('yii','Failed to set unsafe attribute "{attribute}" of "{class}".',array('{attribute}'=>$name, '{class}'=>get_class($this))),CLogger::LEVEL_WARNING);
}

Этот метод вызывается, когда небезопасный атрибут назначается массово. По умолчанию, если YII_DEBUG включен, выводится сообщение об ошибке. В противном случае, ничего не делается.

rules() метод

public array rules()
{return} array правила валидации, применяемые при вызове validate().
Исходный код: framework/base/CModel.php#86 (показать)
public function rules()
{
    return array();
}

Возвращает правила валидации для атрибутов.

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

array('attribute list', 'validator name', 'on'=>'scenario name', ...validation parameters...)
где
  • список атрибутов: указывает атрибуты (разделенные запятыми) для проверки;
  • имя валидатора: указывает используемый валидатор. Он может быть именем метода класса модели, именем встроенного валидатора или классом валидатора (или его псевдонимом пути). Метод валидации должен иметь следующий синтаксис:
    // $params refers to validation parameters given in the rule
    function validatorName($attribute,$params)
    
    Встроенный валидатор — это один из валидаторов, объявленных в CValidator::builtInValidators. Класс валидатора — это класс, расширяющий CValidator.
  • on: указывает сценарии, в которых должно выполняться правило валидации. Разделяйте разные сценарии запятыми. Если этот параметр не задан, правило будет применяться в любом сценарии, который не указан в "except". Подробнее см. сценарий.
  • except: указывает сценарии, в которых правило валидации не должно выполняться. Разделяйте разные сценарии запятыми. Подробнее см. сценарий.
  • дополнительные параметры используются для инициализации свойств соответствующего валидатора. Сведения о возможных свойствах см. в API соответствующего класса валидатора.


Вот несколько примеров:
array(
    array('username', 'required'),
    array('username', 'length', 'min'=>3, 'max'=>12),
    array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),
    array('password', 'authenticate', 'on'=>'login'),
);


Обратите внимание, для наследования правил, определенных в родительском классе, дочерний класс должен объединить родительские правила с правилами дочернего класса с помощью функций, таких как array_merge().

См. также

  • сценарий

setAttributes() метод

public void setAttributes(array $values, boolean $safeOnly=true)
$values массив значения атрибутов (имя=>значение) для установки.
$safeOnly логическое указывает, следует ли выполнять присваивание только для безопасных атрибутов. Безопасный атрибут — это атрибут, связанный с правилом валидации в текущем сценарии.
Исходный код: framework/base/CModel.php#464 (показать)
public function setAttributes($values,$safeOnly=true)
{
    if(!
is_array($values))
        return;
    
$attributes=array_flip($safeOnly ? $this->getSafeAttributeNames() : $this->attributeNames());
    foreach(
$values as $name=>$value)
    {
        if(isset(
$attributes[$name]))
            
$this->$name=$value;
        elseif(
$safeOnly)
            
$this->onUnsafeAttribute($name,$value);
    }
}

Устанавливает значения атрибутов массовым способом.

См. также

  • getSafeAttributeNames
  • attributeNames

setScenario() метод

public void setScenario(string $value)
$value строка сценарий, в котором находится эта модель.
Исходный код: framework/base/CModel.php#533 (показать)
public function setScenario($value)
{
    
$this->_scenario=$value;
}

Устанавливает сценарий для модели.

См. также

  • getScenario

unsetAttributes() метод (доступен начиная с v1.1.3)

public void unsetAttributes(array $names=NULL)
$names массив список атрибутов, которые должны быть установлены в null. Если этот параметр не задан, значения всех атрибутов, указанных в attributeNames, будут сброшены.
Исходный код: framework/base/CModel.php#484 (показать)
public function unsetAttributes($names=null)
{
    if(
$names===null)
        
$names=$this->attributeNames();
    foreach(
$names as $name)
        
$this->$name=null;
}

Устанавливает атрибуты в null.

validate() метод

public boolean validate(array $attributes=NULL, boolean $clearErrors=true)
$attributes массив список атрибутов, которые должны быть проверены. По умолчанию null, что означает, что должны быть проверены все атрибуты, указанные в соответствующих правилах валидации. Если этот параметр задан как список атрибутов, будут проверены только указанные атрибуты.
$clearErrors логическое указывает, следует ли вызвать clearErrors перед выполнением валидации
{return} логическое указывает, успешно ли выполнена валидация без ошибок.
Исходный код: framework/base/CModel.php#152 (показать)
public function validate($attributes=null, $clearErrors=true)
{
    if(
$clearErrors)
        
$this->clearErrors();
    if(
$this->beforeValidate())
    {
        foreach(
$this->getValidators() as $validator)
            
$validator->validate($this,$attributes);
        
$this->afterValidate();
        return !
$this->hasErrors();
    }
    else
        return 
false;
}

Выполняет валидацию.

Этот метод выполняет правила валидации, объявленные в rules. Будут выполнены только правила, применимые к текущему сценарию. Правило считается применимым к сценарию, если его опция 'on' не установлена или содержит сценарий.

Ошибки, обнаруженные во время валидации, можно получить с помощью getErrors.

См. также

  • beforeValidate
  • afterValidate

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

Spec-Zone.ru

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