Sonata管理员覆盖服务配置

时间:2013-06-07 13:37:58

标签: php symfony sonata-admin

我安装了sonata管理包,其中包含来自同一供应商的通知包。但是,我不想在管理面板上显示通知包。

我知道,为了做到这一点,我可以使用:

show_in_dashboard="false"

我已将它放在供应商文件夹中,但它可以工作,但我想将它放在config.yml上,这样就不会在服务器或版本更新之间造成问题。

关于如何做到这一点的任何想法?

对于谁可能关心禁用演示文稿的正常语法是:

<tag
                    name="sonata.admin"
                    manager_type="orm"
                    group="sonata_notification"
                    label="notifications"
                    label_translator_strategy="sonata.admin.label.strategy.underscore"
                    show_in_dashboard="false"
               />

或yml:

tags:
            - { name: sonata.admin, manager_type: orm, group: "Some Group", label: "", show_in_dashboard: false }

由于

2 个答案:

答案 0 :(得分:4)

我解决此问题的方法是在sonata_admin配置中明确指定要在仪表板中显示哪些管理服务。

sonata_admin:
dashboard:
    blocks:
        # display a dashboard block
        - { position: left, type: sonata.admin.block.admin_list }

    groups:
        some_group:
          label:  "Some group"
          items:
            - some_admin_service
            - some_other_admin_Service
        some_other_group:
          label:  "Some other group"
          items:
            ...

可以在文档http://sonata-project.org/bundles/admin/2-1/doc/reference/dashboard.html

中找到更多示例

答案 1 :(得分:1)

您可以使用services.yml覆盖服务定义(在您的情况下)。

1)创建文件(如果不存在):app / config / services.yml

2)在config.yml的“进口”部分添加新来源:

imports:
- { resource: parameters.yml }
- { resource: services.yml }

3)使用

添加服务定义
show_in_dashboard: false

它将覆盖供应商的默认值