Класс yii\base\DynamicModel
| Наследование | yii\base\DynamicModel » yii\base\Model » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable |
| Использует Трейты | yii\base\ArrayableTrait |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/base/DynamicModel.php |
DynamicModel — это класс модели, в первую очередь используемый для поддержки асинхронной проверки данных.
Типичное использование DynamicModel выглядит следующим образом:
public function actionSearch($name, $email)
{
$model = DynamicModel::validateData(compact('name', 'email'), [
[['name', 'email'], 'string', 'max' => 128],
['email', 'email'],
]);
if ($model->hasErrors()) {
// validation fails
} else {
// validation succeeds
}
}
В приведенном выше примере показано, как проверить $name и $email с помощью DynamicModel. Метод validateData() создаёт экземпляр DynamicModel, определяет атрибуты, используя предоставленные данные (name и email в этом примере), и затем вызывает yii\base\Model::validate().
Вы можете проверить результат проверки с помощью hasErrors(), как и в случае с обычной моделью. Вы также можете получить доступ к динамическим атрибутам, определённым через экземпляр модели, например, $model->name и $model->email.
В качестве альтернативы, вы можете использовать следующий более "классический" синтаксис для выполнения проверки данных:
$model = new DynamicModel(compact('name', 'email'));
$model->addRule(['name', 'email'], 'string', ['max' => 128])
->addRule('email', 'email')
->validate();
DynamicModel реализует функцию асинхронной проверки данных, поддерживая так называемые "динамические атрибуты". Это в основном позволяет определять атрибут динамически через его конструктор или метод defineAttribute().
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $activeValidators | yii\validators\Validator[] | Валидаторы, применимые к текущему $scenario. | yii\base\Model |
| $attributes | массив | Значения атрибутов (имя => значение). | yii\base\Model |
| $behaviors | yii\base\Behavior[] | Список поведений, присоединённых к данному компоненту | yii\base\Component |
| $errors | массив | Ошибки для всех атрибутов или указанного атрибута. | yii\base\Model |
| $firstErrors | массив | Первые ошибки. | yii\base\Model |
| $iterator | ArrayIterator | Итератор для обхода элементов в списке. | yii\base\Model |
| $scenario | строка | Сценарий, в котором находится данная модель. | yii\base\Model |
| $validators | ArrayObject|yii\validators\Validator[] | Все валидаторы, объявленные в модели. | yii\base\Model |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Object |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | Конструкторы. | yii\base\DynamicModel |
| __get() | Возвращает значение свойства компонента. | yii\base\DynamicModel |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\DynamicModel |
| __set() | Устанавливает значение свойства компонента. | yii\base\DynamicModel |
| __unset() | Устанавливает свойство компонента в значение null. | yii\base\DynamicModel |
| activeAttributes() | Возвращает имена атрибутов, которые подлежат валидации в текущем сценарии. | yii\base\Model |
| addError() | Добавляет новую ошибку к указанному атрибуту. | yii\base\Model |
| addErrors() | Добавляет список ошибок. | yii\base\Model |
| addRule() | Добавляет правило валидации для этой модели. | yii\base\DynamicModel |
| afterValidate() | Этот метод вызывается после завершения валидации. | yii\base\Model |
| attachBehavior() | Присоединяет поведение к данному компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| attributeHints() | Возвращает подсказки к атрибутам. | yii\base\Model |
| attributeLabels() | Возвращает метки атрибутов. | yii\base\Model |
| attributes() | Возвращает список имён атрибутов. | yii\base\DynamicModel |
| beforeValidate() | Этот метод вызывается перед началом валидации. | yii\base\Model |
| behaviors() | Возвращает список поведений, которые должен иметь этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, может ли быть прочитано свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, может ли быть установлено свойство. | yii\base\Object |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| clearErrors() | Удаляет ошибки для всех атрибутов или одного атрибута. | yii\base\Model |
| createValidators() | Создаёт объекты валидаторов на основе правил валидации, указанных в rules(). | yii\base\Model |
| defineAttribute() | Определяет атрибут. | yii\base\DynamicModel |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| extraFields() | Возвращает список полей, которые могут быть расширены и возвращены методом toArray(). | yii\base\ArrayableTrait |
| fields() | Возвращает список полей, которые по умолчанию должны быть возвращены методом toArray(), если не указаны конкретные поля. | yii\base\ArrayableTrait |
| formName() | Возвращает имя формы, которое должен использовать этот класс модели. | yii\base\Model |
| generateAttributeLabel() | Генерирует удобочитаемую метку атрибута на основе имени атрибута. | yii\base\Model |
| getActiveValidators() | Возвращает валидаторы, применимые к текущему $scenario. | yii\base\Model |
| getAttributeHint() | Возвращает текстовую подсказку для указанного атрибута. | yii\base\Model |
| getAttributeLabel() | Возвращает текстовую метку для указанного атрибута. | yii\base\Model |
| getAttributes() | Возвращает значения атрибутов. | yii\base\Model |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все поведения, присоединённые к данному компоненту. | yii\base\Component |
| getErrors() | Возвращает ошибки для всех атрибутов или одного атрибута. | yii\base\Model |
| getFirstError() | Возвращает первую ошибку указанного атрибута. | yii\base\Model |
| getFirstErrors() | Возвращает первую ошибку каждого атрибута в модели. | yii\base\Model |
| getIterator() | Возвращает итератор для обхода атрибутов в модели. | yii\base\Model |
| getScenario() | Возвращает сценарий, в котором используется эта модель. | yii\base\Model |
| getValidators() | Возвращает все валидаторы, объявленные в rules(). | yii\base\Model |
| hasErrors() | Возвращает значение, указывающее, есть ли ошибки валидации. | yii\base\Model |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчики, прикреплённые к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
| isAttributeActive() | Возвращает значение, указывающее, является ли атрибут активным в текущем сценарии. | yii\base\Model |
| isAttributeRequired() | Возвращает значение, указывающее, является ли атрибут обязательным. | yii\base\Model |
| isAttributeSafe() | Возвращает значение, указывающее, является ли атрибут безопасным для массового назначения. | yii\base\Model |
| load() | Заполняет модель данными из входных данных. | yii\base\Model |
| loadMultiple() | Заполняет набор моделей данными от конечного пользователя. | yii\base\Model |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| offsetExists() | Возвращает, существует ли элемент по указанному смещению. | yii\base\Model |
| offsetGet() | Возвращает элемент по указанному смещению. | yii\base\Model |
| offsetSet() | Устанавливает элемент по указанному смещению. | yii\base\Model |
| offsetUnset() | Устанавливает значение элемента по указанному смещению в null. | yii\base\Model |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| onUnsafeAttribute() | Этот метод вызывается, когда атрибут небезопасен для массового назначения. | yii\base\Model |
| rules() | Возвращает правила валидации для атрибутов. | yii\base\Model |
| safeAttributes() | Возвращает имена атрибутов, которые безопасны для массового назначения в текущем сценарии. | yii\base\Model |
| scenarios() | Возвращает список сценариев и соответствующие активные атрибуты. | yii\base\Model |
| setAttributes() | Устанавливает значения атрибутов массовым способом. | yii\base\Model |
| setScenario() | Устанавливает сценарий для модели. | yii\base\Model |
| toArray() | Преобразует модель в массив. | yii\base\ArrayableTrait |
| trigger() | Вызывает событие. | yii\base\Component |
| undefineAttribute() | Отменяет определение атрибута. | yii\base\DynamicModel |
| validate() | Выполняет проверку данных. | yii\base\Model |
| validateData() | Проверяет заданные данные с указанными правилами проверки. | yii\base\DynamicModel |
| validateMultiple() | Проверяет несколько моделей. | yii\base\Model |
Защищенные методы
| Метод | Описание | Определено |
|---|---|---|
| resolveFields() | Определяет, какие поля могут быть возвращены методом toArray(). | yii\base\ArrayableTrait |
События
| Событие | Тип | Описание | Определено |
|---|---|---|---|
| EVENT_AFTER_VALIDATE | yii\base\Event | Событие, поднимаемое в конце validate() | yii\base\Model |
| EVENT_BEFORE_VALIDATE | yii\base\ModelEvent | Событие, поднимаемое в начале validate(). | yii\base\Model |
Константы
| Константа | Значение | Описание | Определено |
|---|---|---|---|
| SCENARIO_DEFAULT | 'default' | Имя сценария по умолчанию. | yii\base\Model |
Подробное описание методов
__construct() метод public
Конструкторы.
| public void __construct ( массив $attributes = [], $config = [] ) | ||
|---|---|---|
| $attributes | массив |
Определяемые динамические атрибуты (пары имя-значение или имена) |
| $config | массив |
Массив конфигурации, который будет применён к этому объекту. |
__get() метод public
Возвращает значение свойства компонента.
Этот метод будет проверять в следующем порядке и действовать соответственно:
- свойство, определённое методом-геттером: возвращает результат геттера
- свойство поведения: возвращает значение свойства поведения
Не вызывайте этот метод напрямую, так как это магический метод PHP, который будет неявно вызван при выполнении $value = $component->property;.
| public mixed __get ( $name ) | ||
|---|---|---|
| $name | строка |
Имя свойства |
| return | mixed |
Значение свойства или значение свойства поведения |
| throws | yii\base\UnknownPropertyException |
если свойство не определено |
| throws | yii\base\InvalidCallException |
если свойство только для записи. |
__isset() метод public
Проверяет, установлено ли свойство, т.е. определено и не равно null.
Этот метод будет проверять в следующем порядке и действовать соответственно:
- свойство, определённое методом-сеттером: возвращает, установлено ли свойство
- свойство поведения: возвращает, установлено ли свойство
- возвращает
falseдля свойств, которые не существуют
Не вызывайте этот метод напрямую, так как это магический метод PHP, который будет неявно вызван при выполнении isset($component->property).
| public boolean __isset ( $name ) | ||
|---|---|---|
| $name | строка |
Имя свойства или имя события |
| return | boolean |
Установлено ли свойство с указанным именем |
__set() метод public
Устанавливает значение свойства компонента.
Этот метод будет проверять в следующем порядке и действовать соответственно:
- свойство, определённое методом-сеттером: устанавливает значение свойства
- событие в формате "on xyz": прикрепляет обработчик к событию "xyz"
- поведение в формате "as xyz": прикрепляет поведение с именем "xyz"
- свойство поведения: устанавливает значение свойства поведения
Не вызывайте этот метод напрямую, так как это магический метод PHP, который будет неявно вызван при выполнении $component->property = $value;.
| public void __set ( $name, $value ) | ||
|---|---|---|
| $name | строка |
Имя свойства или имя события |
| $value | mixed |
Значение свойства |
| throws | yii\base\UnknownPropertyException |
если свойство не определено |
| throws | yii\base\InvalidCallException |
если свойство только для чтения. |
__unset() метод public
Устанавливает свойство компонента в null.
Этот метод будет проверять в следующем порядке и действовать соответственно:
- свойство, определённое методом-сеттером: устанавливает значение свойства в null
- свойство поведения: устанавливает значение свойства в null
Не вызывайте этот метод напрямую, так как это магический метод PHP, который будет неявно вызван при выполнении unset($component->property).
| public void __unset ( $name ) | ||
|---|---|---|
| $name | строка |
Имя свойства |
| throws | yii\base\InvalidCallException |
если свойство только для чтения. |
addRule() метод public
Добавляет правило валидации в эту модель.
Вы также можете напрямую манипулировать $validators для добавления или удаления правил валидации. Этот метод предоставляет сокращение.
| public $this addRule ( $attributes, $validator, $options = [] ) | ||
|---|---|---|
| $attributes | строка|массив |
Атрибут(ы), которые будут проверены по правилу |
| $validator | mixed |
Валидатор для правила. Это может быть встроенное имя валидатора, имя метода класса модели, анонимная функция или имя класса валидатора. |
| $options | массив |
Параметры (пары имя-значение), которые будут применены к валидатору |
| return | $this |
Сама модель |
attributes() метод public
Возвращает список имён атрибутов.
По умолчанию этот метод возвращает все публичные статические свойства класса. Вы можете переопределить этот метод, чтобы изменить стандартное поведение.
| public массив attributes ( ) | ||
|---|---|---|
| return | массив |
Список имён атрибутов. |
defineAttribute() метод public
Определяет атрибут.
| public void defineAttribute ( $name, $value = null ) | ||
|---|---|---|
| $name | строка |
Имя атрибута |
| $value | mixed |
Значение атрибута |
undefineAttribute() метод public
Удаляет определение атрибута.
| public void undefineAttribute ( $name ) | ||
|---|---|---|
| $name | строка |
Имя атрибута |
validateData() статический метод public
Проверяет предоставленные данные по заданным правилам валидации.
Этот метод создаёт экземпляр DynamicModel, заполняет его данными для проверки, создаёт указанные правила валидации и затем проверяет данные по этим правилам.
| public static static validateData ( массив $data, $rules = [] ) | ||
|---|---|---|
| $data | массив |
Данные (пары имя-значение) для проверки |
| $rules | массив |
Правила валидации. См. yii\base\Model::rules() для формата этого параметра. |
| return | static |
Экземпляр модели, который содержит проверяемые данные |
| throws | yii\base\InvalidConfigException |
если правило валидации указано некорректно. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-base-dynamicmodel.html