Трейт ValidatorAwareTrait
Трейт, предоставляющий методы для построения и взаимодействия с валидаторами.
Этот трейт полезен при создании функций типа ORM, когда реализующий класс хочет создавать и настраивать различные экземпляры валидаторов.
Этот трейт ожидает, что классы, включающие его, определят три константы:
-
DEFAULT_VALIDATOR- Имя валидатора по умолчанию. -
VALIDATOR_PROVIDER_NAME- Имя провайдера, которому назначен включающий класс в валидаторах. -
BUILD_VALIDATOR_EVENT- Имя события, которое должно быть сгенерировано при создании валидаторов.
Если включающий класс также реализует события, событие Model.buildValidator будет сгенерировано при создании валидаторов.
Прямые пользователи
Краткое описание свойств
-
$_validatorClassprotectedКласс валидатора.string - Список объектов валидации, индексированных по имени
$_validatorsprotected
Краткое описание методов
- createValidator() protectedСоздаёт валидатор, используя пользовательский метод внутри вашего класса.
- getValidator() public
Возвращает правила валидации, помеченные $name. Возможны несколько различных наборов валидации с именами, это полезно, когда вам нужно использовать различные правила при сохранении из различных процедур вашей системы.
- hasValidator() publicПроверяет, установлен ли валидатор.
- setValidator() publicЭтот метод сохраняет пользовательский валидатор под заданным именем.
- validationDefault() public
Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор валидации по умолчанию в объект валидатора.
- validationMethodExists() protectedПроверяет, существует ли метод валидации.
-
Возвращает правила валидации, помеченные $name. Возможны несколько различных наборов валидации с именами, это полезно, когда вам нужно использовать различные правила при сохранении из различных процедур вашей системы.
Подробное описание методов
createValidator()source protected
createValidator( string $name )
Создаёт валидатор, используя пользовательский метод внутри вашего класса.
Этот метод используется только для создания нового валидатора, и он не сохраняет его в вашем объекте. Если вы хотите создать и повторно использовать валидаторы, используйте метод getValidator() вместо этого.
Параметры
- строка
$name - Имя набора валидации для создания.
Возвращает
Cake\Validation\ValidatorВыбрасывает
RuntimeExceptiongetValidator()source public
getValidator( string|null $name = null )
Возвращает правила валидации, помеченные $name. Возможны несколько различных наборов валидации с именами, это полезно, когда вам нужно использовать различные правила при сохранении из различных процедур вашей системы.
Если валидатор не был установлен ранее, этот метод создаст валидатор, используя метод внутри вашего класса.
Например, если вы хотите создать набор валидации с именем 'forSubscription', вам нужно создать метод в вашем подклассе Table следующим образом:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
}
$validator = $this->getValidator('forSubscription'); Вы можете реализовать метод в validationDefault в вашем подклассе Table, если вы хотите иметь набор валидации, который применяется в случаях, когда другой набор не указан.
Если аргумент $name не указан, возвращается валидатор по умолчанию. Вы можете настроить имя валидатора по умолчанию в константе класса %%%CODE_BLOCK_14%%.
Параметры
- строка|null
$nameопционально null - Имя набора валидации для возврата.
Возвращает
Cake\Validation\ValidatorhasValidator()source public
hasValidator( string $name )
Проверяет, установлен ли валидатор.
Параметры
- строка
$name - Имя валидатора.
Возвращает
booleansetValidator()source public
setValidator( string $name , Cake\Validation\Validator $validator )
Этот метод сохраняет пользовательский валидатор под заданным именем.
Вы можете самостоятельно создать объект и сохранить его в своём объекте:
$validator = new \Cake\Validation\Validator($table);
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$this->setValidator('forSubscription', $validator); Параметры
- строка
$name - Имя устанавливаемого валидатора.
-
Cake\Validation\Validator$validator - Объект валидатора для установки.
Возвращает
$this
validationDefault()source public
validationDefault( Cake\Validation\Validator $validator )
Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор валидации по умолчанию в объект валидатора.
Параметры
-
Cake\Validation\Validator$validator Валидатор, который можно изменить, чтобы добавить в него некоторые правила.
Возвращает
Cake\Validation\ValidatorvalidationMethodExists()source protected
validationMethodExists( string $name )
Проверяет, существует ли метод валидации.
Параметры
- строка
$name - Имя метода валидации.
Возвращает
booleanvalidator()source public deprecated
validator( string|null $name = null , Cake\Validation\Validator $validator = null )
Возвращает правила валидации, помеченные $name. Возможны несколько различных наборов валидации с именами, это полезно, когда вам нужно использовать различные правила при сохранении из различных процедур вашей системы.
Существует два способа создания и именования наборов валидации: создание нового метода внутри вашего подкласса Table или создание объекта валидатора самостоятельно и сохранение его с помощью этого метода.
Например, если вы хотите создать набор валидации с именем 'forSubscription', вам нужно создать метод в вашем подклассе Table следующим образом:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
} В противном случае, вы можете создать объект самостоятельно и сохранить его в объекте Table:
$validator = new \Cake\Validation\Validator($table);
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$table->setValidator('forSubscription', $validator); Вы можете реализовать метод в validationDefault в вашем подклассе Table, если вы хотите иметь набор валидации, который применяется в случаях, когда другой набор не указан.
Устарело
3.5.0 Используйте getValidator/setValidator вместо этого.Параметры
- строка|null
$nameопционально null - имя набора валидации для возврата
-
Cake\Validation\Validator$validatorопционально null Экземпляр валидатора для сохранения, использовать null для получения валидатора.
Возвращает
Cake\Validation\ValidatorВыбрасывает
RuntimeExceptionПодробное описание свойств
$_validatorssource
protected Cake\Validation\Validator[]
Список объектов валидации, индексированных по имени
[]
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.8/class-Cake.Validation.ValidatorAwareTrait.html