我尝试使用奏鸣曲管理包和奏鸣曲包。我已经创建了 ApplicationSontaUserBundle,如果我使用 fosUserInterface 一切正常。但我有另一个用户 Bundle,例如名为 Sso。所以在我的应用程序中,我需要使用 Sso userManger 而不是 FosUserManager。奏鸣曲用户包包含一个“admin_orm.xml”,在这个服务配置文件中,我在文件中有这一行:(在奏鸣曲用户包中)
<service id="sonata.user.admin.user" class="%sonata.user.admin.user.class%">
<tag name="sonata.admin" manager_type="orm" label="users" label_catalogue="SonataUserBundle" label_translator_strategy="sonata.admin.label.strategy.underscore" />
<argument />
<argument>%sonata.user.admin.user.entity%</argument>
<argument>%sonata.user.admin.user.controller%</argument>
<call method="setUserManager">
<argument type="service" id="fos_user.user_manager" />
</call>
<call method="setTranslationDomain">
<argument>%sonata.user.admin.user.translation_domain%</argument>
</call>
</service>
在 Application/Sonata/UserBundle/Resources/config/admin_orm.xml 中,我有这个:
<call method="setUserManager">
<argument type="service" id="sso.user_manager" />
</call>
因为我在 Application/Sonata/Admin/Model/UserAdmin.php 中定义了另一个 userAdmin
use xxx\SsoBundle\Entity\UserManager;
....
/**
* @param UserManager $userManager
*/
public function setUserManager(UserManager $userManager)
{
$this->userManager = $userManager;
}
而不是原来的 FosUserInterface。但是,它从不接受我的设置
Application/Sonata/UserBundle/Resources/config/admin_orm.xml
它总是抱怨用户管理器是一个 FosUserInterface 对象,我需要自己的用户管理器。如果我改变
/vendor/sonata-project/user-bundle/Sonata/UserBundle/Resources/config/admin_orm.xml
并设置我自己的用户管理器,一切正常。谁能告诉我如何覆盖这个文件?