"또는 심지어 사용자 (사용자 및 그룹 포함)를 완전히 제거하거나 숨길 수 있습니까?"
그래서 SonataUserBundle과 AppBundle이 있습니다. 두 경우 모두 사용자 및 그룹 엔터티가 있습니다. 그리고 우리는 소나타에서 엔티티를 사용하고 싶지 않습니다. 그러나 SonataUserBundle에는 이미 UserAdmin 및 GroupAdmin 클래스가 있습니다. 관리자 메뉴에 SonataUserBundle를 설치 한 후이 개 서비스를 표시하는 이유입니다 그 :
아시다시피
, 우리는 services.yml 파일에 선언 모든 소나타 관리 클래스입니다. 는 SonataUserBundle에서 우리는 소나타 개발자에서 서비스를 선언 다른 파일을 가지고 교리 ORM을 사용하는 경우 우리는이 경로에있다 admin_orm.xml 파일에 표시되어야합니다.
vendor/sonata-project/user-bundle/Resources/config/admin_orm.xml
우리가 찾을 수있는 파일 내부 관리자 서비스의 선언 - UserAdmin 및 GroupAdmin :
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="sonata.user.admin.groupname">sonata_user</parameter>
<parameter key="sonata.user.admin.label_catalogue">SonataUserBundle</parameter>
<parameter key="sonata.user.admin.groupicon"><![CDATA[<i class='fa fa-users'></i>]]></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="%sonata.user.admin.label_catalogue%" label_translator_strategy="sonata.admin.label.strategy.underscore" icon="%sonata.user.admin.groupicon%"/>
<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="%sonata.user.admin.label_catalogue%" 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>
여기에 우리의 서비스의 식별자 볼 수 있듯이 :
을 0
sonata.user.admin.user
sonata.user.admin.group
그들을 덮어 쓰는 가장 간단한 방법은 services.yml 파일에서 동일한 서비스 (이 ID를 사용할 것임)를 만드는 것입니다. 예, 당신은 나와 함께 논쟁 할 수 있습니다,이 방법은 어리 석다,하지만 내가 말했듯이 그것은 유일한 것이 아닙니다.우리 services.yml의 의지에
그래서 소나타 서비스는 다음과 같습니다
sonata.user.admin.user:
class: "%sonata.user.admin.user.class%"
arguments: [~, "%sonata.user.admin.user.entity%", "%sonata.user.admin.user.controller%"]
tags:
- { name: sonata.admin, manager_type: orm, group: "%sonata.user.admin.groupname%", label_catalogue: "%sonata.user.admin.label_catalogue%", label: "users", icon: "<i class=\"fa fa-users\"></i>" }
calls:
- [ setUserManager, [ "@fos_user.user_manager" ] ]
- [ setTranslationDomain, [ "%sonata.user.admin.user.translation_domain%" ] ]
sonata.user.admin.group:
class: "%sonata.user.admin.group.class%"
arguments: [~, "%sonata.user.admin.group.entity%", "%sonata.user.admin.group.controller%"]
tags:
- { name: sonata.admin, manager_type: orm, group: "%sonata.user.admin.groupname%", label_catalogue: "%sonata.user.admin.label_catalogue%", label: "groups" }
calls:
- [ setTranslationDomain, [ "%sonata.user.admin.group.translation_domain%" ] ]
는 이제 관리자 대시 보드를 업데이트하고 볼 수 있습니다, 아무 일도하지 않았는지. 그러나 우리의 목적은 대시 보드와 메뉴에서이 서비스를 비활성화하는 것이 었습니다. 트릭을 만들어 봅시다. 이 서비스의 선언에 services.yml에
show_in_dashboard: false
tags:
- { show_in_dashboard: false, name: sonata.admin, manager_type: orm, group: "%sonata.user.admin.groupname%", label_catalogue: "%sonata.user.admin.label_catalogue%", label: "users", icon: "<i class=\"fa fa-user\"></i>" }
을 추가하십시오.
따라서 우리의 서비스는 다음과 같이됩니다 :이 사소한 조작 소나타 서비스 후
sonata.user.admin.user:
class: "%sonata.user.admin.user.class%"
arguments: [~, "%sonata.user.admin.user.entity%", "%sonata.user.admin.user.controller%"]
tags:
- { name: sonata.admin, manager_type: orm, group: "%sonata.user.admin.groupname%", label_catalogue: "%sonata.user.admin.label_catalogue%", label: "users", icon: "<i class=\"fa fa-user\"></i>", show_in_dashboard: false }
calls:
- [ setUserManager, [ "@fos_user.user_manager" ] ]
- [ setTranslationDomain, [ "%sonata.user.admin.user.translation_domain%" ] ]
sonata.user.admin.group:
class: "%sonata.user.admin.group.class%"
arguments: [~, "%sonata.user.admin.group.entity%", "%sonata.user.admin.group.controller%"]
tags:
- { name: sonata.admin, manager_type: orm, group: "%sonata.user.admin.groupname%", label_catalogue: "%sonata.user.admin.label_catalogue%", label: "groups", show_in_dashboard: false }
calls:
- [ setTranslationDomain, [ "%sonata.user.admin.group.translation_domain%" ] ]
을 완전히 대시 보드에서 사라집니다.