public function ExpressionValidator::validate in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/validator/Constraints/ExpressionValidator.php \Symfony\Component\Validator\Constraints\ExpressionValidator::validate()
Checks if the passed value is valid.
Parameters
mixed $value The value that should be validated:
Constraint $constraint The constraint for the validation:
Overrides ConstraintValidatorInterface::validate
File
- vendor/
symfony/ validator/ Constraints/ ExpressionValidator.php, line 57
Class
- ExpressionValidator
- @author Fabien Potencier <fabien@symfony.com> @author Bernhard Schussek <bschussek@symfony.com>
Namespace
Symfony\Component\Validator\ConstraintsCode
public function validate($value, Constraint $constraint) {
if (!$constraint instanceof Expression) {
throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\\Expression');
}
$variables = array();
// Symfony 2.5+
if ($this->context instanceof ExecutionContextInterface) {
$variables['value'] = $value;
$variables['this'] = $this->context
->getObject();
}
elseif (null === $this->context
->getPropertyName()) {
$variables['value'] = $value;
$variables['this'] = $value;
}
else {
$root = $this->context
->getRoot();
$variables['value'] = $value;
if (is_object($root)) {
// Extract the object that the property belongs to from the object
// graph
$path = new PropertyPath($this->context
->getPropertyPath());
$parentPath = $path
->getParent();
$variables['this'] = $parentPath ? $this
->getPropertyAccessor()
->getValue($root, $parentPath) : $root;
}
else {
$variables['this'] = null;
}
}
if (!$this
->getExpressionLanguage()
->evaluate($constraint->expression, $variables)) {
if ($this->context instanceof ExecutionContextInterface) {
$this->context
->buildViolation($constraint->message)
->setParameter('{{ value }}', $this
->formatValue($value))
->addViolation();
}
else {
$this
->buildViolation($constraint->message)
->setParameter('{{ value }}', $this
->formatValue($value))
->addViolation();
}
}
}