ExecutionContextInterface
интерфейс ExecutionContextInterface
Контекст выполнения валидации.
Контекст собирает все нарушения, сгенерированные во время валидации. По умолчанию, валидаторы выполняют все валидации в новом контексте:
$violations = $validator->validate($object);
Когда вы делаете другой вызов валидатору, пока валидация выполняется, нарушения будут изолированы друг от друга:
public function validate($value, Constraint $constraint)
{
$validator = $this->context->getValidator();
// The violations are not added to $this->context
$violations = $validator->validate($value);
}
Однако, если вы хотите добавить нарушения в текущий контекст, используйте метод {@link ValidatorInterface::inContext()}:
public function validate($value, Constraint $constraint)
{
$validator = $this->context->getValidator();
// The violations are added to $this->context
$validator
->inContext($this->context)
->validate($value)
;
}
Кроме того, контекст предоставляет информацию о текущем состоянии валидатора, например, о текущем валидируемом классе, имени текущего валидируемого свойства и многом другом. Эти значения меняются со временем, поэтому вы не можете сохранить контекст и ожидать, что методы будут возвращать те же результаты позже.
Методы
| addViolation(string $message, array $params = array()) Добавляет нарушение в текущем узле графа валидации. | ||
| ConstraintViolationBuilderInterface | buildViolation(string $message, array $parameters = array()) Возвращает конструктор для добавления нарушения с дополнительной информацией. | |
| ValidatorInterface | getValidator() Возвращает валидатор. | |
| object|null | getObject() Возвращает текущий валидируемый объект. | |
| setNode(mixed $value, object|null $object, MetadataInterface $metadata = null, string $propertyPath) Устанавливает текущее валидируемое значение. | ||
| setGroup(string|null $group) Устанавливает текущую группу валидации. | ||
| setConstraint(Constraint $constraint) Устанавливает текущее валидируемое ограничение. | ||
| markGroupAsValidated(string $cacheKey, string $groupHash) Помечает объект как валидированный в определенной группе валидации. | ||
| bool | isGroupValidated(string $cacheKey, string $groupHash) Возвращает, был ли объект валидирован в определенной группе валидации. | |
| markConstraintAsValidated(string $cacheKey, string $constraintHash) Помечает ограничение как валидированное для объекта. | ||
| bool | isConstraintValidated(string $cacheKey, string $constraintHash) Возвращает, было ли ограничение валидировано для объекта. | |
| markObjectAsInitialized(string $cacheKey) Помечает, что объект был инициализирован. | ||
| bool | isObjectInitialized(string $cacheKey) Возвращает, был ли объект инициализирован. | |
| ConstraintViolationListInterface | getViolations() Возвращает нарушения, сгенерированные валидатором до сих пор. | |
| mixed | getRoot() Возвращает значение, в котором началась валидация в графе объекта. | |
| mixed | getValue() Возвращает значение, которое валидатор в данный момент валидирует. | |
| MetadataInterface|null | getMetadata() Возвращает метаданные для текущего валидируемого значения. | |
| string | getGroup() Возвращает группу валидации, которая в данный момент валидируется. | |
| string|null | getClassName() Возвращает имя класса текущего узла. | |
| string|null | getPropertyName() Возвращает имя свойства текущего узла. | |
| string | getPropertyPath(string $subPath = '') Возвращает путь к свойству значения, которое в данный момент валидируется валидатором. |
Подробности
addViolation(string $message, array $params = array())
Добавляет нарушение в текущем узле графа валидации.
Параметры
| string | $message | Сообщение об ошибке |
| array | $params | Параметры, подставляемые в сообщении об ошибке |
ConstraintViolationBuilderInterface buildViolation(string $message, array $parameters = array())
Возвращает билдер для добавления нарушения с расширенной информацией.
Вызовите {@link ConstraintViolationBuilderInterface::addViolation()} для добавления нарушения, когда закончите конфигурацию:
$context->buildViolation('Please enter a number between %min% and %max%.')
->setParameter('%min%', 3)
->setParameter('%max%', 10)
->setTranslationDomain('number_validation')
->addViolation();
Параметры
| string | $message | Сообщение об ошибке |
| array | $parameters | Параметры, подставляемые в сообщении об ошибке |
Значение, возвращаемое функцией
| ConstraintViolationBuilderInterface | Билдер для создания нарушения |
ValidatorInterface getValidator()
Возвращает валидатор.
Полезно, если нужно валидировать дополнительные ограничения:
public function validate($value, Constraint $constraint)
{
$validator = $this->context->getValidator();
$violations = $validator->validateValue($value, new Length(array('min' => 3)));
if (count($violations) > 0) {
// ...
}
}
Значение, возвращаемое функцией
| ValidatorInterface |
object|null getObject()
Возвращает текущий валидируемый объект.
Если валидатор в данный момент валидирует ограничение класса, возвращается объект этого класса. Если валидируется ограничение свойства или геттера, возвращается объект, к которому принадлежит свойство/геттер.
В других случаях возвращается null.
Значение, возвращаемое функцией
| object|null | Текущий валидируемый объект или null. |
setNode(mixed $value, object|null $object, MetadataInterface $metadata = null, string $propertyPath)
Устанавливает текущее валидируемое значение.
Параметры
| mixed | $value | Валидируемое значение |
| object|null | $object | Текущий валидируемый объект |
| MetadataInterface | $metadata | Данные метаданных валидации |
| string | $propertyPath | Путь к свойству текущего значения |
setGroup(string|null $group)
Устанавливает текущую группу валидации.
Параметры
| string|null | $group | Валидируемая группа |
setConstraint(Constraint $constraint)
Устанавливает текущее валидируемое ограничение.
Параметры
| Constraint | $constraint | Валидируемое ограничение |
markGroupAsValidated(string $cacheKey, string $groupHash)
Помечает объект как валидированный в определённой группе валидации.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $groupHash | Имя или хэш группы, если это последовательность групп |
bool isGroupValidated(string $cacheKey, string $groupHash)
Возвращает, был ли объект валидирован в определённой группе валидации.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $groupHash | Имя или хэш группы, если это последовательность групп |
Значение, возвращаемое функцией
| bool | Был ли объект уже валидирован для этой группы |
markConstraintAsValidated(string $cacheKey, string $constraintHash)
Помечает ограничение как валидированное для объекта.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $constraintHash | Хэш ограничения |
bool isConstraintValidated(string $cacheKey, string $constraintHash)
Возвращает, было ли ограничение валидировано для объекта.
Параметры
| string | $cacheKey | Хэш объекта |
| string | $constraintHash | Хэш ограничения |
Значение, возвращаемое функцией
| bool | Было ли ограничение уже валидировано |
markObjectAsInitialized(string $cacheKey)
Помечает, что объект был инициализирован.
Параметры
| string | $cacheKey | Хэш объекта |
См. также
| ObjectInitializerInterface |
bool isObjectInitialized(string $cacheKey)
Возвращает, был ли объект инициализирован.
Параметры
| string | $cacheKey | Хэш объекта |
Значение, возвращаемое функцией
| bool | Был ли объект уже инициализирован |
См. также
| ObjectInitializerInterface |
ConstraintViolationListInterface getViolations()
Возвращает нарушения, сгенерированные валидатором до этого момента.
Значение, возвращаемое функцией
| ConstraintViolationListInterface | Список нарушений. |
mixed getRoot()
Возвращает значение, с которого началась валидация в графе объекта.
Валидатор, получив объект, просматривает свойства и связанные объекты, а также их свойства. Корнем валидации является объект, с которого начался обход.
Текущее значение возвращается методом {@link getValue}.
Значение, возвращаемое функцией
| mixed | Корневое значение валидации. |
mixed getValue()
Возвращает значение, которое в данный момент валидируется валидатором.
Если нужно получить объект, который изначально был передан валидатору, используйте {@link getRoot}.
Значение, возвращаемое функцией
| mixed | Текущее валидируемое значение. |
MetadataInterface|null getMetadata()
Возвращает метаданные для текущего валидируемого значения.
В реализации ядра этот метод возвращает экземпляр {@link Mapping\ClassMetadataInterface}, если текущее значение является объектом, экземпляр {@link Mapping\PropertyMetadata} если текущее значение — значение свойства, и экземпляр {@link Mapping\GetterMetadata} если валидируемое значение является результатом метода геттера.
Если валидируемое значение не соответствует ни одному из этих типов, например, если валидатор был вызван с простым значением и ограничением, этот метод возвращает null.
Значение, возвращаемое функцией
| MetadataInterface|null | Метаданные текущего валидируемого значения. |
string getGroup()
Возвращает группу валидации, которая в данный момент валидируется.
Значение, возвращаемое функцией
| string | Текущая группа валидации. |
string|null getClassName()
Возвращает имя класса текущего узла.
Если метаданные текущего узла не реализуют {@link Mapping\ClassMetadataInterface} или если для текущего узла нет доступных метаданных, этот метод возвращает null.
Значение, возвращаемое функцией
| string|null | Имя класса или null, если имя класса не найдено. |
string|null getPropertyName()
Возвращает имя свойства текущего узла.
Если метаданные текущего узла не реализуют {@link PropertyMetadataInterface} или если для текущего узла нет доступных метаданных, этот метод возвращает null.
Значение, возвращаемое функцией
| string|null | Имя свойства или null, если имя свойства не найдено. |
string getPropertyPath(string $subPath = '')
Возвращает путь к свойству значения, которое в данный момент валидируется валидатором.
Например, рассмотрим следующую графу объекта:
(Person)---($address: Address)---($street: string)
Когда экземпляр Person передаётся валидатору, путь к свойству изначально пуст. Когда валидируется свойство $address этого человека, путь к свойству — "address". Когда валидируется свойство $street связанного экземпляра Address, путь к свойству — "address.street".
Свойства объектов в пути к свойству предваряются точкой. Индексы массивов или объектов, реализующих интерфейс {@link \ArrayAccess}, заключаются в квадратные скобки. Например, если свойство в предыдущем примере — $addresses и содержит массив экземпляров Address, путь к свойству для свойства $street одного из этих адресов — например, "addresses[0].street".
Параметры
| string | $subPath | Необязательно. Суффикс, добавляемый к текущему пути к свойству. |
Результат
| string | Текущий путь к свойству. Результат может быть пустой строкой, если валидатор в настоящее время проверяет корневое значение графа валидации. |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/3.0/Symfony/Component/Validator/Context/ExecutionContextInterface.html