4

PropelBundle と FOS UserBundle を使用した Symfony 2.1 のプロジェクトがあります。FOS UserBundle with Composer を 1.2 から最新バージョン (2.0) にアップグレードし、Upgrade.mdファイルに示されているように app/config/config.yml ファイルの「propel_user_class」定義を削除する指示に従いました。私の新しい設定は次のとおりです。

# FOSUserBundle Configuration
fos_user:
    db_driver: propel
    firewall_name: main
    user_class: MyVendor\MyBundle\Model\Member
    registration:
        form:
            type: myvendor_user_registration

そうしてモデルを再構築した後、ユーザー ログイン フォームを送信すると、「ユーザー プロバイダーは UserInterface オブジェクトを返す必要があります」というエラーが表示されます。

FOS UserBundle がユーザー クラス "Member" とそのプロパティを認識しないという問題があると思います。FOS/UserBundle の以前のバージョン (1.2) では、FOS\UserBundle\Model\UserInterface はプロキシ オブジェクトによって実装されていたため、以前の構成 (動作していた) には次のものが含まれていました。

user_class: MyVendor\MyBundle\FOSUserBundle\Propel\UserProxy
propel_user_class: MyVendor\MyBundle\Model\Member

私の UserProxy.php ファイルは、FOS\UserBundle\Propel\UserProxy を拡張し、私のプロジェクトに固有のプロパティを追加するために使用されました。その UserProxy.php は、新しい UserBundle バージョンではもう必要ありませんか? 新しい UserBundle バージョンを機能させるには、他に何をする必要がありますか? 上記の Upgrade.md ファイルは、プロファイル フォームが CheckPassword クラスでユーザーをラップしなくなったこと、およびトークンの生成が User クラスによって行われなくなったことについても説明しています。しかし、そのために変更を加える必要があるかどうかはわかりませんか? 誰かが私にいくつかのガイドラインを教えてもらえますか?

Member、Circle、および MemberCircle クラス定義スキーマを app/Resources/FOSUserBundle/config/propel/schema.xml に移動して、ドキュメントに示されているように FOS ユーザー バンドル内のスキーマをオーバーライドしようとしましたが、独自のバンドル内のクラスに伝えました。 FOS UserBundle のものを拡張しますが、「app/console propel:build」で propel モデルをビルドしようとすると、次のエラーが発生します。

[RuntimeException]
「MyProjectName/app/Resources/FOSUserBundle/config/propel/schema.xml」リソースは、「MyBundle」派生バンドルのリソースによって隠されています。「MyProjectName/app/Resources/MyBundle/config/propel/schema.xml」ファイルを作成して、バンドル リソースをオーバーライドします。

名前空間「FOS\UserBundle\Propel」を app/Resources/FOSUserBundle/config/propel/schema.xml ファイルに保持しました。FOS/UserBundle のスキーマをオーバーライドするにはどうすればよいですか? 「メンバー」(ユーザーの場合) と「サークル」(グループの場合) という名前のクラスを使用できますか?

4

0 に答える 0