我想知道是否有可能获得在自定义验证器中验证的实体的类。
以下是自定义验证器:
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?
}
}
答案 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约束并将其绑定到您的实体。