我有一个带有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.6
和 sonata-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
,所有管理员都会再次显示在侧边栏中。
您可以在此票证中看到讨论和发现。这也是他们将标识符更改为真正独特的内容的票证。