Трейт 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Проверяет существование метода валидации.
- 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. Можно иметь несколько различных наборов правил валидации с именами, что полезно при необходимости использования различных правил при сохранении из разных процедур в вашей системе.
Существует два способа создания и именования наборов правил валидации: создание нового метода внутри вашего собственного подкласса таблицы или создание объекта валидатора самостоятельно и сохранение его с помощью этого метода.
Например, если вы хотите создать набор правил валидации с именем 'forSubscription', вам нужно создать метод в вашем подклассе таблицы следующим образом:
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
} В противном случае, вы можете создать объект самостоятельно и сохранить его в объекте таблицы:
$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 в вашем подклассе таблицы, если хотите иметь набор правил валидации, который применяется в случаях, когда не указан никакой другой набор.
Устарело
3.5.0 Используйте getValidator/setValidator вместо этого.Параметры
- строка|null
$nameнеобязательно null - имя набора правил валидации для возвращения
-
Cake\Validation\Validator$validatorнеобязательно null экземпляр валидатора для сохранения, используйте null, чтобы получить валидатор.
Возвращает
Cake\Validation\ValidatorИсключения
RuntimeExceptionПодробное описание свойств
$_validatorssource
protected Cake\Validation\Validator[]
Список объектов валидации, индексированных по имени
[]
© 2005–2018 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.5/class-Cake.Validation.ValidatorAwareTrait.html