Я пытаюсь изменить или переопределить конфигурацию (admin_orm.xml) службы (sonata.user.admin.user), которая создается SonataUserBundle. Я хотел бы иметь возможность использовать entitymanager в этой службе. Потому что мне нужно отредактировать редактирование на другом объекте после создания нового пользователя на SonataAdminBundle (https://sonata-project.org/bundles/admin/2-3/doc/reference/saving_hooks.html).Symfony 2.8: Edit service config
Конфигурационный файл:
<parameters>
<parameter key="sonata.user.admin.groupname">sonata_user</parameter>
</parameters>
<services>
<service id="sonata.user.admin.user" class="%sonata.user.admin.user.class%">
<tag name="sonata.admin" manager_type="orm" group="%sonata.user.admin.groupname%" 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>
<service id="sonata.user.admin.group" class="%sonata.user.admin.group.class%">
<tag name="sonata.admin" manager_type="orm" group="%sonata.user.admin.groupname%" label="groups" label_catalogue="SonataUserBundle" label_translator_strategy="sonata.admin.label.strategy.underscore" />
<argument />
<argument>%sonata.user.admin.group.entity%</argument>
<argument>%sonata.user.admin.group.controller%</argument>
<call method="setTranslationDomain">
<argument>%sonata.user.admin.group.translation_domain%</argument>
</call>
</service>
</services>
Прежде всего спасибо за ваш повтор и да, я уже пытался скопировать определение службы, но я получаю такие ошибки, как: Невозможно автоматически определить имя базового маршрута, укажите значение baseRouteName по умолчанию для класса admin .. Возможно, это связано с тем, что i должен деактивировать услугу в штучной упаковке, но как я могу это сделать? –
Я не знаю о такой функции, как отключить службы в symfony из коробки. Но я думаю, вы можете просто создать компилятор, чтобы перезаписать определения контейнера. Посмотрите на этот пример: http://symfony.com/doc/current/components/dependency_injection/tags.html определите, что компилятор передается в вашем ChildMediaBundle: http://symfony.com/doc/current/cookbook/service_container /compiler_passes.html –