我使用Symfony2,我想创建一个注册表单。 我不想使用FOSUserBundle。
所以,我创建了一个实体帐户(包含字段:用户名,密码,电子邮件......),然后创建表单:
$account = new Account();
$form = $this->createFormBuilder($account)
->add('username', 'text', array('label' => 'Nom de compte :'))
->add('password', 'password', array('label' => 'Mot de passe :'))
->add('email', 'email', array('label' => 'Adresse email :'))
->getForm();
现在,我想为密码添加一个确认字段。 但是,当我尝试使用add()方法添加字段时,例如“password_confirmation” 我有这个:
“App \ FrontBundle \ Entity \ Account”类中不存在属性“password_confirmation”和方法“getPasswordConfirmation()”以及方法“isPasswordConfirmation()”
如何添加自定义字段?之后,如何有效呢?
谢谢。 BR。
答案 0 :(得分:63)
Symfony 2.1的更新:
property_path
已被弃用,您应该使用mapped。语法保持不变:
->add('password_confirmation', 'password', array('mapped' => false))
答案 1 :(得分:51)
在正常情况下,您需要使用property_path选项明确指定* password_confirmation *不是实体的一部分。
->add('password_confirmation', 'password', array('property_path' => false))
然后使用CallBackValidator验证它。
但是,在这种特殊情况下,您想要重复某个字段,repeated窗口小部件可以为您执行此操作。
->add('password_confirmation', 'repeated', array(
// See the docs :)
));