2016-03-24 2 views
2

Я пишу виджет Odoo v9, который отображает URL-адрес на основе конкатенации параметра в базе данных и фактических полей формы.Odoo UI widget - как получить настройки из базы данных?

Настройка в базе данных, которую я фигурирую, должна находиться в ir_config_parameter. Я вставляю значение по умолчанию в свой модуль.

Каков наилучший способ получить это значение при визуализации виджета? Делая АЯКС вызов асинхронной используя

новую модель («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

Сообщите мне, если вы найдете что-то лучшее. Еще одна вещь ... Я проверил источники разных приложений. Я не видел что-то вроде config. Работа с 'ir_config_parameter' происходит через RPC. –

Смежные вопросы