Ich versuche die Konfiguration (admin_orm.xml) eines Dienstes (sonata.user.admin.user), der von SonataUserBundle erstellt wurde, zu bearbeiten oder zu überschreiben. Ich würde gerne den Entitymanager in diesem Dienst verwenden können. Weil ich nach der Erstellung eines neuen Benutzers auf SonataAdminBundle (https://sonata-project.org/bundles/admin/2-3/doc/reference/saving_hooks.html) die Bearbeitung für eine andere Entität bearbeiten muss.Symfony 2.8: Bearbeiten der Dienstkonfiguration
Die Konfigurationsdatei:
<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>
Zunächst einmal danke für Ihre Wiederholung und ja, ich habe bereits versucht, die Service-Definition zu kopieren, aber ich bekomme einen Fehler wie: Kann nicht automatisch Basisroutenname bestimmen, bitte definieren Sie einen Standardwert baseRouteName für die Admin-Klasse .. Es ist vielleicht weil ich muss den Boxed Service deaktivieren, aber wie kann ich das machen? –
Ich weiß nicht über eine Funktionalität wie Deaktivieren von Diensten in Symfony out of the box. Aber ich denke, Sie können einfach einen Compiler-Pass erstellen, um Ihre Containerdefinitionen zu überschreiben. Sehen Sie sich dieses Beispiel an: http://symfony.com/doc/current/components/dependency_injection/tags.html Definieren Sie, dass der Compiler in Ihrem ChildMediaBundle übergeben wird: http://symfony.com/doc/current/cookbook/service_container /compiler_passes.html –