Трейт ValidatorAwareTrait
Трейт, предоставляющий методы для создания и взаимодействия с валидаторами.
Этот трейт полезен при создании функций наподобие ORM, когда реализующий класс хочет создавать и настраивать различные экземпляры валидаторов.
Этот трейт предполагает, что классы, его включающие, определяют две константы:
-
DEFAULT_VALIDATOR- имя валидатора по умолчанию. -
VALIDATOR_PROVIDER_NAME- имя провайдера, назначенное включающему классу в валидаторах.
Если включающий класс также реализует события, то событие Model.buildValidator будет срабатывать при создании валидаторов.
Прямые пользователи
Краткое описание свойств
-
$_validatorClassprotectedКласс валидатора.string - Список объектов валидации, индексированных по имени
$_validatorsprotected
Краткое описание методов
- createValidator() protectedСоздаёт валидатор с помощью пользовательского метода внутри вашего класса.
- getValidator() public
Возвращает правила валидации, помеченные меткой $name. Можно иметь несколько наборов правил валидации с разными именами, это полезно, когда вам нужны разные правила при сохранении из разных частей вашей системы.
- hasValidator() publicПроверяет, установлен ли валидатор.
- setValidator() publicЭтот метод сохраняет пользовательский валидатор под заданным именем.
- validationDefault() public
Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор правил валидации по умолчанию к объекту валидатора.
- validationMethodExists() protectedПроверяет, существует ли метод валидации.
- validator() public
Возвращает правила валидации, помеченные меткой $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 не предоставлен, возвращается валидатор по умолчанию. Вы можете настроить имя валидатора по умолчанию в константе класса DEFAULT_VALIDATOR.
Параметры
- строка|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
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->validator('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–2017 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.4/class-Cake.Validation.ValidatorAwareTrait.html