我正在尝试在Symfony 2项目中实现更改密码功能。
我在User
文件中有实体validation.yml
和验证规则。在User
实体中,我的字段为“password
”,其验证限制在validation.yml
我创建了包含2个字段“password
”和“confirmPasswod
”的表单。我想对“密码”字段使用我的实体验证约束,并检查“passwod
”和“confirmPassword
”字段之间的相等性。在我的控制者中,我写了
$form = $this->createForm(new SymfonyForm\ChangePasswordType(), new Entity\User());
if ($form->isValid())
{..............}
在“用户”实体中,我没有“confirmPasswod”字段。所以我得到错误:
Neither property "confirmPassword" nor method "getConfirmPassword()" nor method "isConfirmPassword()" exists in class
有没有办法对某些表单字段使用基于实体的表单验证,而不为其他表单字段使用基于实体的验证? 提前谢谢。
答案 0 :(得分:16)
在SymfonyForm\ChangePasswordType
中,您可以使用以下内容:
$builder->add('password', 'repeated', array(
'type' => 'password',
'first_name' => 'Password',
'second_name' => 'Password confirmation',
'invalid_message' => 'Passwords are not the same',
));
从Symfony 2.1开始,您可以配置选项以避免元素名称损坏(如评论中所述)
$builder->add('password', 'repeated', array(
// … the same as before
'first_name' => 'passwd',
'second_name' => 'passwd_confirm',
// new since 2.1
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Password confirmation'),
));