3

我正在编写一个 Odoo v9 小部件,它基于数据库中设置的连接和实际的表单字段来呈现 URL。

我认为数据库中的设置应该存在于 ir_config_parameter 中。我正在用我的模块插入一个默认值。

渲染小部件时获取此值的最佳方法是什么?使用异步 ajax 调用

新模型(“ir.config_parameter”)

似乎有点重手。有没有更好的方法来做到这一点?

谢谢。

小部件代码:

    var UrlWidget2 = form_common.FormWidget.extend({
        start: function() {
            this._super();
            this.field_manager.on("field_changed:ref", this, this.display_result);
            this.display_result();
        },
        display_result: function() {
            var ref = this.field_manager.get_field_value("ref");

            if (!ref) return;

            var baseUrl = 'https://example.com'; //this is the value I want to get from the setting in the database. 
            var url = baseUrl + '/foo/' + ref;    

            this.$el.html('<a href="' + url + '" target="portal">View Externally</a><br /><br/>');
        }
    });
4

1 回答 1

0

您可以为此使用RPC 。这是对我有用的示例:

var Model = require('web.DataModel'); 

var UrlWidget2 = form_common.FormWidget.extend({
        // just example how to get parameter from backend
        display_result: function() {
            var parameter = new Model('ir.config_parameter');
            // get fields value, key
            parameter.query(['value', 'key'])
                // criteria of search - record with id = 1
                .filter([['id', '=', 1]])
                // only one record
                .limit(1)
                .all()
                .then(function (parameter) {
                    // here data from server
                    console.log(parameter);
            });
        // ...
        }
    });

希望这对您有所帮助。

于 2016-03-30T16:03:47.667 回答