Spec-Zone.ru › CakePHP 4.3

Класс ValidatorAwareTrait

Трейт, предоставляющий методы для создания и взаимодействия с валидаторами.

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

Этот трейт ожидает, что классы, включающие его, определят три константы:

  • DEFAULT_VALIDATOR - Имя валидатора по умолчанию.
  • VALIDATOR_PROVIDER_NAME - Имя провайдера, присвоенного включающему классу в валидаторах.
  • BUILD_VALIDATOR_EVENT - Имя события, которое должно быть активировано при создании валидаторов.

Если включающий класс также реализует события, то событие Model.buildValidator будет активировано при создании валидаторов.

Пространство имён: Cake\Validation

Краткое описание свойств

  • $_validatorClass protected
    string

    Класс валидатора.

  • $_validators protected
    arrayCake\Validation\Validator>

    Список объектов валидации, индексированных по имени

Краткое описание методов

  • createValidator() protected

    Создаёт валидатор с помощью пользовательского метода внутри вашего класса.

  • getValidator() public

    Возвращает правила валидации, помеченные тегом $name. Возможны несколько наборов валидации с разными именами, что полезно, когда вам нужно использовать различные правила при сохранении из разных процедур в вашей системе.

  • hasValidator() public

    Проверяет, установлен ли валидатор.

  • setValidator() public

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

  • validationDefault() public

    Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор валидации по умолчанию в объект валидатора.

  • validationMethodExists() protected

    Проверяет наличие метода валидации.

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

createValidator() protected

createValidator(string $name): Cake\Validation\Validator

Создаёт валидатор с помощью пользовательского метода внутри вашего класса.

Этот метод используется только для создания нового валидатора и не сохраняет его в вашем объекте. Если вы хотите создавать и повторно использовать валидаторы, используйте вместо этого метод getValidator().

Параметры

string $name

Имя набора валидации для создания.

Возвращает

Cake\Validation\Validator

Выбрасывает

RuntimeException

getValidator() public

getValidator(string|null $name = null): Cake\Validation\Validator

Возвращает правила валидации, помеченные тегом $name. Возможны несколько наборов валидации с разными именами, что полезно, когда вам нужно использовать различные правила при сохранении из разных процедур в вашей системе.

Если валидатор ранее не был установлен, этот метод создаст валидатор с помощью метода внутри вашего класса.

Например, если вы хотите создать набор валидации с именем 'forSubscription', вам необходимо создать метод в подклассе вашей Таблицы следующим образом:

public function validationForSubscription($validator)
{
    return $validator
        ->add('email', 'valid-email', ['rule' => 'email'])
        ->add('password', 'valid', ['rule' => 'notBlank'])
        ->requirePresence('username');
}

$validator = $this->getValidator('forSubscription');

Вы можете реализовать метод в validationDefault в вашем подклассе Таблицы, если хотите иметь набор валидации, который применяется в случаях, когда не указан другой набор.

Если аргумент $name не предоставлен, будет возвращён валидатор по умолчанию. Вы можете настроить имя валидатора по умолчанию в константе класса DEFAULT_VALIDATOR.

Параметры

string|null $name optional

Имя набора валидации для возврата.

Возвращает

Cake\Validation\Validator

hasValidator() public

hasValidator(string $name): bool

Проверяет, установлен ли валидатор.

Параметры

string $name

Имя валидатора.

Возвращает

bool

setValidator() public

setValidator(string $name, Cake\Validation\Validator $validator): $this

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

Вы можете создать объект самостоятельно и сохранить его в своём объекте:

$validator = new \Cake\Validation\Validator();
$validator
    ->add('email', 'valid-email', ['rule' => 'email'])
    ->add('password', 'valid', ['rule' => 'notBlank'])
    ->allowEmpty('bio');
$this->setValidator('forSubscription', $validator);

Параметры

string $name

Имя валидатора, который нужно установить.

Cake\Validation\Validator $validator

Объект валидатора, который нужно установить.

Возвращает

$this

validationDefault() public

validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator

Возвращает объект валидатора по умолчанию. Подклассы могут переопределить эту функцию, чтобы добавить набор валидации по умолчанию в объект валидатора.

Параметры

Cake\Validation\Validator $validator

Валидатор, который можно изменить, чтобы добавить к нему некоторые правила.

Возвращает

Cake\Validation\Validator

validationMethodExists() protected

validationMethodExists(string $name): bool

Проверяет наличие метода валидации.

Параметры

string $name

Имя метода валидации.

Возвращает

bool

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

$_validatorClass protected

Класс валидатора.

Тип

string

$_validators protected

Список объектов валидации, индексированных по имени

Тип

arrayCake\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/4.3/trait-Cake.Validation.ValidatorAwareTrait.html

Spec-Zone.ru

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