Spec-Zone.ru › CakePHP 3.6

Трейт 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. Возможны несколько наборов валидации с разными именами, что полезно, когда необходимо использовать различные правила при сохранении из разных процедур вашей системы.

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

Например, если вы хотите создать набор валидации с именем '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.6/class-Cake.Validation.ValidatorAwareTrait.html

Spec-Zone.ru

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