0

这个线程中,我与一个自定义验证器作斗争。感谢 stackoverflow 用户,我可以使用验证器。现在,我不能这样做显示错误。验证器类是:

class ExistEmailValidator extends ConstraintValidator
{

    protected $userService;

    public function setUserService($us) {
        $this->userService = $us;
    }

    public function validate($value, Constraint $constraint)
    {
        if($this->userService->existUserEmail($value) == false){
            $this->context->addViolation($constraint->message, array('%string%' => $value));
        }

    }

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

}

我在树枝上写form_errors(myForm),但没有显示错误。验证器工作正常,但没有设置错误。

有任何想法吗 ?

4

1 回答 1

0

请参阅类约束文档。类约束被传递给一个对象而不是一个简单的值。您是否在实体上设置了正确的注释?例如,

use My\Namespace\Validator\Constraints as MyAssertions;

/**
 * @MyAssertions\ExistEmailValidator
 *
 */
class MyEntity
{
    protected $id;

    protected $email;

    // etc...

}

在您的验证器中,您将收到一个 MyEntity 实例,您可以从中检索电子邮件值并对其进行验证。正如上面评论中提到的,您可能还想使用 addViolationAt 。

我希望这会有所帮助,并且我正确地理解了您的情况。我敢肯定那里有更好的解释。

于 2013-12-29T20:16:13.457 回答