2

我在自己的堆栈中使用 Form 组件,我需要创建一个约束/验证器对。

问题是我需要修改约束内的值。例如:如果值为 123,则将其更改为 456。

我怎样才能做到这一点?我需要它由约束或验证器处理,因为我不想在所有地方重复该逻辑。

4

1 回答 1

2

$object在您的自定义约束中,如果它是表单类约束,您可以访问该变量。您应该能够在验证期间调用 set 方法。

因此,在您的自定义约束类中:

public function getTargets()
    {
      return self::CLASS_CONSTRAINT;
    }

在您的自定义 ConstraintValidator

 public function validate($object, Constraint $constraint)
    {
    /*
    *  thensomewhere in  the code 
    */
    if($object->getNumber() == 123){
       $object->setNumber(456);
    }

一些帮助来源:

http://symfony.com/doc/current/cookbook/validation/custom_constraint.html

http://symfony.com/doc/current/reference/constraints/Callback.html

于 2013-08-16T08:08:12.950 回答