如何在Pimcore对象编辑器中点击按钮获取表格选中记录?
在Pimcore对象编辑器中获取表格选中记录的方案
我懂你现在的需求——已经在Pimcore对象编辑器的面板加了导出按钮,就差点击时能拿到表格里选中的记录对吧?咱们直接调整你现有的代码,搞定这个问题:
首先,Pimcore的对象编辑器里的数据表格,一般挂载在object.grid属性下,我们可以通过ExtJS的选择模型方法来获取选中的记录。下面是调整后的完整代码:
postOpenObject: function (object, type) { object.toolbar.add({ iconCls: 'pimcore_icon_export', scale: 'small', handler: function (object) { // 获取表格的选择模型,拿到选中的记录数组 const selectedRecords = object.grid.getSelectionModel().getSelection(); // 先判断有没有选中记录,没有的话给用户提示 if (selectedRecords.length === 0) { pimcore.helpers.showNotification("提示", "请先选择要导出的记录", "info"); return; } // 提取你需要的记录信息,这里以记录ID为例,也可以取其他字段 const selectedIds = selectedRecords.map(record => record.getId()); // 如果要取自定义字段,比如name,可以写成 record.data.name // 发起请求,把选中的ID传递给后端接口 const req = new XMLHttpRequest(); // 用GET请求把ID拼接成参数,也可以换成POST传JSON req.open("GET", `/admin/export-xyz/?ids=${selectedIds.join(',')}`, true); // 可以加个请求结果的反馈 req.onload = function() { if (req.status >= 200 && req.status < 400) { pimcore.helpers.showNotification("成功", "导出请求已提交", "success"); } else { pimcore.helpers.showNotification("错误", "导出失败,请稍后重试", "error"); } }; req.send(); }.bind(this, object) }); pimcore.layout.refresh(); },
几个关键细节给你说明下:
- 获取选中记录:
object.grid.getSelectionModel().getSelection()是ExtJS获取表格选中项的标准方式,返回的是选中的记录对象数组。 - 提取数据:你可以根据自己的需求从记录里取对应字段,比如
record.data.your_custom_field就能拿到自定义字段的值。 - 请求传递参数:这里用GET请求把ID用逗号拼接后传参,如果你需要传递更复杂的数据,也可以改用POST请求,把数据转成JSON格式发送。
- 用户反馈:加了选中为空的提示和请求结果的通知,让操作更友好。
内容的提问来源于stack exchange,提问作者user17190466
相关产品推荐
相关产品推荐

