Spec-Zone.ru › CakePHP 3.5

Трейт ValidatorAwareTrait

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

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

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

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

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

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

  • 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

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

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

createValidator()source protected

createValidator( string $name )

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

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

Параметры

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

Возвращает

Cake\Validation\Validator

Исключения

RuntimeException

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

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

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

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

$_validatorClasssource

protected строка

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

'\Cake\Validation\Validator'

$_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

Spec-Zone.ru

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