通过ui_component XML添加列时更新ui_bookmark表


9

在Magento 2中,ui_component基于网格的网格允许您对列进行重新排序,Magento下次登录时将记住您的设置。这是通过Magento ui_bookmark(通过Magento\Ui\Model\Bookmark模型对象)将数据保存在表中来完成的。

尽管此功能很简洁,但是当扩展开发人员或系统集成商使用Magento ui_componentXML向表中添加列时,它可能会带来问题。如果有自定义数据,ui_bookmark则Magento将(似乎)忽略新列的排序顺序,并且可能会发生奇怪/意外的事情。

对于想要将列添加到UI网格(Magento或自己的列)并确保列与其他列相关的扩展开发人员,是否有最佳实践和/或系统?即-“此第二个操作按钮应始终显示在最后,或始终显示倒数第二个”,或“名称字段应始终在ID之后。

扩展开发人员是否需要通过app/code/Package/Module/Setup/...类到达ui_bookmark表并自己更新这些条目?还是有更好的方法来做到这一点?还是当用户已经有一个条目时,扩展开发人员是否只需要将一列添加到意外的地方ui_bookmark

Answers:


4

我认为这是magento2中的错误。

我通常在通过任何模块添加新列后清理ui_bookmark表。

Magento2保存列位置,即使列顺序没有任何修改。

"positions":{
    "ids":0,
    "increment_id":1,
    "store_id":2,
    "created_at":3,
    "billing_name":4,
    "shipping_name":5,
    ...
}

但是,如果仅在用户修改后才存储列位置,则新列也会遇到相同的问题。

如果将添加诸如as name column after id或的相对顺序my_column before actions,我们将在UI中拖动列。

如果您将ui_bookmark在模块安装期间清除表格-您可以清除清单的自定义用户设置。

也许,核心开发人员最后需要修复action专栏作为部分解决方案。

我认为,这个问题不是唯一正确的决定

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.