如何在 MODX 集合子网格中配置下拉列表?

How to configure a dropdown in the MODX Collections children grid?

我希望能够使用下拉菜单 select 更改集合网格中显示的资源的 TV 值。

任何人都可以提供一个示例,说明如何在

的集合网格中创建 select 框

我知道这是可能的,但找不到足够接近我需要实现的示例,我可以自己解决。

我尝试过的是

我看过 Susan Otwell 关于如何使用 select 框更改创建者的示例 http://modxcookbook.com/add-ons/collections/editable-grid-view.html

下面链接的讨论解决了类似的问题,但仍未得到解答 https://forums.modx.com/thread/95984/adding-modx-combo-to-collections-list

MIGX 配置和语法看起来很相似,但不够接近,我无法弄清楚我需要做什么 https://forums.modx.com/thread/91403/single-select-listbox-entries-in-migx

MODx.combo.ComboBox 文档看起来有一些相关的细节,但我不知道这是否有用 https://docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/custom-manager-pages/modext/modx.combo.combobox

我在其他 Extras 的源代码中寻找过类似下拉列表的示例。我看到了 xtype 引用,但无法对它们进行逆向工程来确定我需要什么来在集合网格中创建自己的下拉菜单。

上面 Susan Otwell 的示例创建了一个基于 xtype modx-combo-user 的下拉列表。这看起来接近我需要的,但我不知道如何调整它以从 TV 值或固定列表创建下拉列表。

{"xtype":"modx-combo-user","renderer":true,"fields": ["fullname","username","id"],"displayField": "fullname","baseParams": {"action": "security/user/getlist","usergroup":2}}

任何人都可以提供示例或向我指出可能有帮助的其他资源吗?

我刚刚在 MODX 论坛上回答了这个问题,但这里是为 Whosebug 上的任何人准备的:

  1. 在您的资产目录中创建一个 JS 文件。为了简单起见, 在您的资产目录中创建一个名为 test.js 的文件。

  2. 转到 MODX 系统设置页面并select Collections 命名空间过滤器。然后在 collections.user_js 设置中,输入 值:{assets_url}test.js。这将指示 Collections 加载 每当 Collections 启动时你的新 test.js 文件。

  3. 对于此示例,将以下 ZoomLevel(用于 Google 地图缩放)示例复制并粘贴到新的 test.js 文件中。

collections.combo.ZoomLevel = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        store: new Ext.data.ArrayStore({
            id: 0
            ,fields: ['level']
            ,data: [
                ['1'],
                ['2'],
                ['3'],
                ['4'],
                ['5'],
                ['6'],
                ['7'],
                ['8'],
                ['9'],
                ['10'],
                ['11'],
                ['12'],
                ['13'],
                ['14'],
                ['15'],
                ['16'],
                ['17'],
                ['18'],
                ['19'],
                ['20'],
                ['21']
            ]
        })
        ,mode: 'local'
        ,displayField: 'level'
        ,valueField: 'level'
        ,name: 'zoom_level'
        ,hiddenName:'zoom_level'
    });
    collections.combo.ZoomLevel.superclass.constructor.call(this,config);
};
Ext.extend(collections.combo.ZoomLevel,MODx.combo.ComboBox);
Ext.reg('collections-combo-zoomlevel',collections.combo.ZoomLevel);
  1. 粘贴后,保存文件。

  2. 转到您的 collections 查看页面并为您的 collections 网格添加一个新列。在编辑器字段中,复制并粘贴以下内容 JSON:

 {
    "xtype": "collections-combo-zoomlevel",
    "renderer": true
 }

您现在有一个组合框编辑器,其中包含我们在 test.js 文件中定义的值。

这些 combo-boxes 是非常可配置的,但要找出什么设置可以做什么可能有点陡峭的学习曲线。

在这里你可以看到Collections本身定义的组合: https://github.com/modxcms/Collections/blob/9a328fa881b76e2ce355876156eaca3126065717/assets/components/collections/js/mgr/extra/collections.combo.js