33

私は 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();

ここで、パスワードの確認フィールドを追加したいと思います。しかし、「password_confirmation」などの add() メソッドでフィールドを追加しようとすると、次のようになります。

プロパティ「password_confirmation」もメソッド「getPasswordConfirmation()」もメソッド「isPasswordConfirmation()」もクラス「App\FrontBundle\Entity\Account」には存在しません

カスタム フィールドを追加するにはどうすればよいですか? その後、それを有効にする方法は?

ありがとうございました。BR。

4

2 に答える 2

67

Symfony 2.1 の更新:

property_pathは廃止されました。代わりに、mappedを使用する必要があります。構文は同じままです。

->add('password_confirmation', 'password', array('mapped' => false))
于 2013-03-01T01:00:16.443 に答える
52

通常の状況では、 property_pathオプションを使用して、*password_confirmation* がエンティティの一部ではないことを明示的に指定する必要があります。

->add('password_confirmation', 'password', array('property_path' => false))

そして、CallBackValidatorで検証します。

ただし、フィールドを繰り返したいこの特定のケースでは、繰り返しウィジェットがそれを行うことができます。

->add('password_confirmation', 'repeated', array(
    // See the docs :)
));
于 2012-06-08T16:13:05.087 に答える