Sonata Admin 仅显示站点栏菜单中的最后一个管理项,但全部显示在仪表板中

Sonata Admin shows only last admin item in sitebar menu but all in dashboard

我有一个带有 SonataAdminBundle 的 symfony 应用程序。在 2.3 版本中,一切都完美无缺。更新到版本 3.1 时,所有管理员仍显示在仪表板中,但只有最后一个组显示在站点栏菜单中。我不知道这是一个错误,还是我错过了一个新设置。不幸的是,3.1 的文档还不是最新的。

我使用两个管理列表将它们分成两列。这是管理配置中包含组和项目的片段:

dashboard:

    blocks:
        - { position: left,  type: sonata.admin.block.admin_list, settings: { groups: [product, event] } }
        - { position: right, type: sonata.admin.block.admin_list, settings: { groups: [system] } }

    groups:
        product:
            label: group.product
            label_catalogue: MyAdminBundle
            icon: '<i class="fa fa-shopping-cart"></i>'
            items:
                - my.admin.product
                - my.admin.product_group
                - my.admin.product_image
                - my.admin.product_media_file
                - my.admin.attribute
        ...

仪表板中显示了包含所有 5 个管理员的漏洞组。在侧边栏菜单中,产品组中仅显示 my.admin.attribute 管理员。这适用于所有群体。它总是只显示最后一个元素。

有人知道这是什么原因吗?

该项目目前使用 symfony/symfony: 2.8.6sonata-project/admin-bundle: 3.1.0

问题是 SonataAdminBundle 使用管理服务的 label 作为标识符。我所有的服务都有一个名为 "title" 的标签,因为无论如何这只是在管理员的翻译文件中翻译的。

my.admin.product:
    class: My\Bundle\AdminBundle\Admin\ProductAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, label: title }
    arguments:
        - ~
        - My\Bundle\AdminBundle\Entity\Product
        - ~

所以解决方案是简单地将标签更改为唯一的标签,例如 product_title,所有管理员都会再次显示在侧边栏中。

您可以在 this ticket 中查看讨论和发现。这也是他们要将标识符更改为真正独特的东西的门票。