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



我有一个带有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作为标识符。我所有的服务都有相同的标签,称为"标题",因为它只是在管理员的翻译文件中翻译的。

my.admin.product:
    class: MyBundleAdminBundleAdminProductAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, label: title }
    arguments:
        - ~
        - MyBundleAdminBundleEntityProduct
        - ~

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

您可以在此票证中看到讨论和发现。这也是他们将标识符更改为真正独特的内容的票证。

最新更新