Symfony 2在Entity中使用注释形成重复验证

时间:2012-03-19 05:35:54

标签: symfony

我的问题是“如何在带有注释的实体中重复验证?”。我有一个帐户实体(电子邮件,密码和confirmPassword)属性。当新用户注册新帐户时,他/她必须填写电子邮件,密码和confirmPassword字段。显然,password和confirmPassword字段必须匹配。我在Stachoverflow中看到了使用纯php(表单构建器)进行此验证的示例,如下所示。

$builder->add('password', 'repeated', array(
    'type' => 'password',
    'first_name' => 'Password',
    'second_name' => 'Password confirmation',
    'invalid_message' => 'Passwords are not the same',
));

但是,这不是我想要的。我希望在我的帐户实体中使用此注释功能。也许

* @Assert\Match(
*      matchField = "password",
*      message = "The password confirmation does not match password."
* )
protected $confirmPassword;

2 个答案:

答案 0 :(得分:1)

您可以使用方法验证:

/**
 * @Assert\True(message = "Passwords are not the same")
 */
public function isPasswordLegal()
{
   return ($this->password == $this->confirmPassword);
}

答案 1 :(得分:1)

请参阅http://symfony.com/doc/current/reference/forms/types/repeated.html#validation

  

重复字段的一个关键特性是内部验证   (你不需要做任何事情来设置它)迫使两者   字段具有匹配值。如果两个字段不匹配,则为   错误将显示给用户。