<?php namespace Incenteev\WebBundle\Validator; use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; class ConditionalValidationGroupValidator extends ConstraintValidator { private $propertyAccessor; public function __construct() { $this->propertyAccessor = PropertyAccess::createPropertyAccessor(); } /** * @param object|array|null $value * @param Constraint $constraint */ public function validate($value, Constraint $constraint) { if (null === $value) { return; } /** @var ConditionalValidationGroup $constraint */ $group = $this->propertyAccessor->getValue($value, $constraint->groupProvider); if (is_string($group)) { $this->context->validate($value, '', array($group)); } } }