我尝试使用sonata admin bundle和sonata bundle。我创建了ApplicationSontaUserBundle,如果我使用fosUserInterface,一切正常。但我有另一个用户Bundle,例如Sso。所以在我的应用程序中,我需要使用Sso userManger而不是FosUserManager。 sonata用户包包含一个“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
并设置我自己的用户管理器,一切正常。任何人都可以告诉我如何覆盖此文件?
答案 0 :(得分:1)