在自定义验证器中获取实体类

时间:2016-08-26 09:01:01

标签: validation symfony

我想知道是否有可能获得在自定义验证器中验证的实体的类。

以下是自定义验证器:

use Symfony\Component\Validator\Constraint;

class UniqueKey extends Constraint {
  public $message = 'The string "%string%" is not good';

  public function validatedBy() {
    return get_class($this).'Validator';
  }
}

class UniqueKeyValidator extends ConstraintValidator {
  public function validate($value, Constraint $constraint) {
    // I would like to get the class of the entity validated. Can I?
  }
}

2 个答案:

答案 0 :(得分:1)

mlwacosmos

您的验证者可以访问正在验证的根对象。 然后,以下内容将允许您访问根对象:

class UniqueKeyValidator extends ConstraintValidator {
    public function validate($value, Constraint $constraint) {
        // This will return the root object
        $object = $this->context->getRoot();
    }
}

如果是通过表单,则根对象将成为表单,您的实体将以表单数据$object->getData();

的形式提供

希望这有帮助。

答案 1 :(得分:0)

不,你不能。如果要在Constraint中操作实体,则必须创建一个Class约束并将其绑定到您的实体。