自定义约束不显示消息

时间:2013-12-28 21:02:05

标签: symfony custom-validators

this线程中与自定义验证器对战。感谢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),但错误没有显示。验证器工作正常,但没有设置错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

use My\Namespace\Validator\Constraints as MyAssertions;

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

    protected $email;

    // etc...

}

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

我希望这有助于我正确理解你的情况。我确信那里有更好的解释。