9

私は現在、FOSUserBundleと互換性のあるM2M関係としてDoctrine永続化ロールエンティティを実装するための最良の方法を見つけようとしています。以前は、デフォルトの実装で文字列のみを使用し、Doctrine配列マッピングを使用してそれを永続化していました。

ここで、他のユーザーがユーザーにロールを付与できる管理バックエンドを構築するために、個別のエンティティとしてのロールを設定する必要があります。

基本的に、それはお尻の痛みです。FOSインターフェースは、役割エンティティではなく、文字列表現用に構築されています。実装を変更すると、ユーザーを宣伝するためのFOSコマンドなどの多くのものが壊れます。そして、symfony2セキュリティシステムが正しく機能し続けるために必要なインターフェースの部分を正確に把握することは困難です。

ロール管理コードを書き直して、可能な限りロールエンティティを使用することができます。例:

$user->addRole(new Role('ROLE_FOO'));

しかし、それはコマンドとおそらく既存のコードを壊しますか?

または、引き続き使用します。

$user->addRole('ROLE_FOO');

そして、役割/エンティティマネージャーのコードを結合しますaddRole()(悪い設計)。

私はこれが灰色の領域(FOSを持つ役割エンティティ)であり、symfony2ボードとここで言及されていることに気づきましたが、まともな解決策はありません。

誰かが経験をしたか、まともな解決策を考えることができますか?

4

1 に答える 1

12

配列/ArrayCollectionの実装を組み合わせて使用​​することにしました。セキュリティシステムを壊さないように、できる限り既存のインターフェースを踏襲するように心がけました。私はhttp://blog.jmoz.co.uk/symfony2-fosuserbundle-role-entitiesで私の解決策を文書化しました

于 2011-12-13T10:38:02.553 に答える