2016-03-24 43 views
2

我正在編寫一個Odoo v9小部件,該小部件基於數據庫中的設置和實際表單字段的串聯呈現URL。Odoo UI小部件 - 如何從數據庫中獲取設置?

數據庫中的設置I figure應該存在於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/>'); 
     } 
    }); 
+0

你想在哪裏顯示設置值?我的意思是它將是形式領域? –

+0

從部件 - 我在寫javascript的地方 - 我需要得到並利用配置設置。 – Nik

+0

顯示你的js部件。我做了類似的事情。也許我可以幫忙。 –

回答

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); 
      }); 
     // ... 
     } 
    }); 

希望這可以幫助你。

+0

謝謝,我可能必須這樣做 - 但正如我在我的問題中所說的,做一個Ajax調用正是我想避免的。我所要做的只是呈現一個鏈接(或者可能有幾個)。要回到服務器,並且異步渲染這些鏈接,會變得很慢。所以我正在尋找更好的實現這一切的一般方法。 – Nik

+0

如果你發現更好的東西,請告訴我。還有一件事...我檢查了不同應用程序的來源。我還沒有看到像配置一樣的東西。使用'ir_config_parameter'處理通過RPC進行。 –

相關問題