2012-02-24 126 views
3

我创建了一个包来管理用户组权限。我希望它通过将它移动到供应商目录来使项目独立。
为了使这个包不可变,我将用户数据移到了一个usermeta包中。
主要包仅包含关于用户的用户名和电子邮件,并且usermeta包含所有其他内容(名称,生日等,无论项目需要)。Symfony 2软件包依赖项问题

问题是打算属于核心捆绑包组的主用户捆绑包,每个项目使用相同的捆绑组。
用户 - 用户元关系现在创建了一个依赖关系。所以每个项目都需要它。

我的问题是
- 如何规范它的格式,在每一个项目执行正确地创建它。
- 我怎样才能使这种依赖性可选(首选)

回答

5

我建议你只处理一个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 – 2012-07-23 10:48:47