我的问题是“如何在带有注释的实体中重复验证?”。我有一个帐户实体(电子邮件,密码和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;
答案 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
重复字段的一个关键特性是内部验证 (你不需要做任何事情来设置它)迫使两者 字段具有匹配值。如果两个字段不匹配,则为 错误将显示给用户。