2012-02-24 9 views
3

ユーザグループのアクセス権を管理するバンドルを作成しました。ベンダーのディレクトリに移動することでプロジェクトを独立させたいと思っています。
このバンドルを不変にするために、ユーザーデータをusermetaバンドルに移動しました。
メインバンドルにはユーザーに関するユーザー名と電子メールのみが含まれており、usermetaには他のもの(名前、生年月日など)がすべて含まれています。symfony 2バンドルの依存関係の問題

問題は、コアバンドルグループに所属することを目的としたメインユーザーバンドルであり、そこからすべてのプロジェクトが使用されています。
user-usermeta関係で依存関係が作成されました。したがって、すべてのプロジェクトで必要となります。

私の質問は
です - どうすればすべてのプロジェクトで適切に作成するようにフォーマットを標準化できますか?
- この依存関係をオプションにするにはどうすればよいですか(推奨)

答えて

5

あなたはバンドル内のUserエンティティの代わりにUserInterfaceを処理することをお勧めします。 、あなたのバンドルを使用したプロジェクトで、その後、あなたのユーザーを

namespace YourDomain\YourBundle\Interface; 

use Symfony\Component\Security\Core\User\UserInterface as BaseInterface; 

/** 
* UserInterface is the interface that user classes must implement. 
*/ 
interface UserInterface extends BaseInterface 
{ 
    /** 
    * Returns the email address of the user. 
    * 
    * @return string The user email address 
    */ 
    function getEmail(); 
} 

そして:SymfonyのたUserInterfaceの場合

はあなたが必要とするすべてのもの(ユーザ名が、なしのメール)を実装し、あなたのバンドルで独自のUserInterfaceを作成しません。エンティティは、Symfony UserInterfaceではなく特定のインタフェースを実装する必要があります。

+0

完全性のために、公式のドキュメントを参照してください。http://symfony.com/doc/master/cookbook/doctrine/resolve_target_entity.html –