Spec-Zone.ru › CakePHP 3.7

Трейт ValidatorAwareTrait

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

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

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

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

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

Прямые пользователи

  • Cake\Form\Form
  • Cake\ORM\Table
Пространство имён: Cake\Validation
Расположение: Validation/ValidatorAwareTrait.php

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

  • $_validatorClass protected
    string
    Класс валидатора.
  • $_validators protected
    Cake\Validation\Validator[]
    Список объектов валидации, индексированных по имени

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

  • createValidator() protected
    Создаёт валидатор с использованием пользовательского метода внутри вашего класса.
  • getValidator() public

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

  • hasValidator() public
    Проверяет, установлен ли валидатор.
  • setValidator() public
    Этот метод сохраняет пользовательский валидатор под заданным именем.
  • validationDefault() public

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

  • validationMethodExists() protected
    Проверяет наличие метода валидации.
  • validator() public deprecated

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

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

createValidator()source protected

createValidator( string $name )

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

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

Параметры

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

Возвращает

Cake\Validation\Validator

Выбрасывает

RuntimeException

getValidator()source public

getValidator( string|null $name = null )

Возвращает правила валидации, помеченные меткой $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.

Параметры

строка|null $name необязательно null
Имя набора валидации для возвращения.

Возвращает

Cake\Validation\Validator

hasValidator()source public

hasValidator( string $name )

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

Параметры

строка $name
Имя валидатора.

Возвращает

boolean

setValidator()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\Validator

validationMethodExists()source protected

validationMethodExists( string $name )

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

Параметры

строка $name
Имя метода валидации.

Возвращает

boolean

validator()source public deprecated

validator( string|null $name = null , Cake\Validation\Validator $validator = null )

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

Существует два способа создания и именования наборов валидации: создание нового метода внутри вашего подкласса Table или создание объекта валидатора самостоятельно и сохранение его с помощью этого метода.

Например, если вы хотите создать набор валидации под названием '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->setValidator('forSubscription', $validator);

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

Устаревшее

3.5.0 Используйте getValidator/setValidator вместо этого.

Параметры

строка|null $name необязательно null
имя набора валидации для возвращения
Cake\Validation\Validator $validator необязательно null

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

Возвращает

Cake\Validation\Validator

Выбрасывает

RuntimeException

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

$_validatorClasssource

protected строка

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

Validator::class

$_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.7/class-Cake.Validation.ValidatorAwareTrait.html

Spec-Zone.ru

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