关于 collective.z3cform.datagridfield 资源bundle 不能用于动态生成widget的说明

关于 collective.z3cform.datagridfield 资源bundle 不能用于动态生成widget的说明

在利用 collective.z3cform.datagridfield 构建一个ajax 动态更新 widget的应用中,发现调用registry.scan()时不能成功完成pattern 扫描。

修复办法是 在 plone.staticresources包中的/home/plone/.buildout/eggs/cp37m/plone.staticresources-1.4.4-py3.7.egg/plone/staticresources/static/components/patternslib/src/core/base.js中做如下处理:

    var initBasePattern = function initBasePattern($el, options, trigger) {
        var name = this.prototype.name;
        var log = logger.getLogger("pat." + name);
        var pattern = $el.data("pattern-" + name);
        if (pattern === undefined && Registry.patterns[name] || name === "datagridfield") {
            try {
                options = this.prototype.parser  === "mockup" ? mockupParser.getOptions($el, name, options) : options;
                pattern = new Registry.patterns[name]($el, options, trigger);
            } catch (e) {
                log.error("Failed while initializing '" + name + "' pattern.", e);
            }
            $el.data("pattern-" + name, pattern);
        }
        return pattern;
    };

加粗部分为修改部分。

设置