0

どうしたの、みんな。

FOSUserBundle の上に PUGXMultiUserBundle を使用して、2 つの異なるユーザー エンティティを登録およびログインしています。

すべてが箱から出してすぐに動作します: FOSUserBundle から基本 User クラスを拡張する User クラスと、User クラスを拡張する Seller と Customer の両方の 2 つのエンティティがあります。

電子メールが優先ログイン プロパティであるため、ユーザーにユーザー名を入力させたくありません。そのため、User クラスの setEmail() および setEmailCanonical() メソッドでは、メールで username と usernameCanonical も設定します。これはうまくいきますが、.

問題はTwigにあります。フォームの最後に form_rest(form) をレンダリングすると、正しく送信され、ユーザーが登録されます。しかし、form_widget(form._token) でセキュリティ トークンをレンダリングして送信しようとすると、同じフォームになり、コントローラーは実行されず、データベースは変更されず、エラーは返されません。

((これを行う理由は、「ユーザー名」入力ボックスをユーザーに必要としないため、表示しないためです。))

質問は次のとおりです。form_rest() は、フォームの正常な動作を妨げている _token 隠し入力以外に何をレンダリングしますか?

私が達成しようとしていることに対するより良いアプローチはありますか?

前もって。

4

1 に答える 1

0

そのためには、次の 2 つの手順を実行します。

1Symfony2 の FOSUserBundle を使用して、ユーザー名フィールドを削除/メールで置き換えるに、回答の最初の部分を既に投稿したことがわかりました。これは、ユーザー名フィールドを削除する古典的な方法です (たとえば、サイレントにします!) FOSUserBundle。その投稿に記載されているすべての手順に従います。

2を使用する場合は、追加の作業を行う必要がありますPUGXMultiUserBunde

#PUGXMultiUserBundle
pugx_multi_user:
  db_driver: orm
  users:
    user_one:
        entity:
          class: Acme\UserBundle\Entity\UserOne
        registration:
          form:
            type: Acme\UserBundle\Form\Type\UserOneRegistrationFormType
            name: fos_user_registration_form
            validation_groups:  [AcmeRegistration, Default]
          template: AcmeUserBundle:Registration:registerUserOne.html.twig

    user_two:
        entity:
          class: Acme\UserBundle\Entity\UserTwo
        registration:
          form:
            type: Acme\UserBundle\Form\Type\UserTwoRegistrationFormType
            name: fos_user_registration_form
            validation_groups:  [AcmeRegistration, Default]
          template: AcmeUserBundle:Registration:registerUserTwo.html.twig

それはそれである必要があります!


編集:検証グループ

AcmeRegistration 登録のために FOSUserBundle に存在するすべての制約が含まれ、適用したくないもの (ユーザー名など) を削除できます。制約は、userOne と userTwo の両方の共通フィールドに適用されます。

コメントで述べたように、次のものを作成することもできます。

AcmeUserOneRegistration UserOne の登録に固有のすべての制約が含まれます。

AcmeUserTwoRegistration UserTwo の登録に固有のすべての制約が含まれます。

PUGXMultiUserBundle 構成で、userOne の場合:

validation_groups:  [AcmeRegistration,AcmeUserOneRegistration, Default]

userTwo の場合:

validation_groups:  [AcmeRegistration,AcmeUserTwoRegistration, Default]
于 2014-01-15T11:59:57.623 に答える