Как пользователь вводит другой пользовательский менеджер в пользовательский пакет соната

Я пытаюсь использовать sonata admin bundle и sonata bundle. Я создал ApplicationSontaUserBundle и все работает нормально, если я использую fosUserInterface. Но у меня есть другой пользовательский пакет, названный 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>

Потому что я определил другого userAdmin в Application/Sonata/Admin/Model/UserAdmin.php

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

и установить свой собственный менеджер пользователей, все работает отлично. Кто-нибудь может сказать мне, как переопределить этот файл?

1 ответ

Решение

Ну через 2 года я нашел решение. И это так глупо. Мне нужно определить класс зависимостей для загрузки XML, и служба будет загружена. Файл конфигурации дочернего комплекта не будет загружен, если вы не напишите класс зависимостей. Так же, как нормальный комплект. Файл конфигурации не может быть "перезаписан", файл конфигурации каждого пакета будет красным, а последний выиграет.

Другие вопросы по тегам