Odoo 12:如何在 sale.order 模型上单击 "Save" 按钮时弹出消息?
Odoo 12 : How to pop up a message when "Save" button is clicked on sale.order model?
卡了3个小时了
当我的条件满足(_some 字段等于 something)时,我想显示一个弹出窗口(一个非阻塞的 ),而用户在 sale.order 模型(仅)的记录的表单视图上单击按钮 "Save"。
应该在执行保存按钮后触发弹出窗口它的默认操作,因为我需要检查数据库中是否满足条件。
我发现 如何在 Odoo 中从 javascript 获得 model.Models。
我还发现我需要覆盖 o_form_button_edit 才能进行更改,但我不知道该怎么做,也不知道它是否对其他型号,因为其他人使用它。
this.$buttons.on('click', '.o_form_button_edit', this._onEdit.bind(this));
不知道我的方法好不好?如果没有,你能推荐另一个吗?
你能帮助我吗?非常感谢。
PS :我需要一个弹出窗口,因为用户可以在保存记录时接受他的更改或丢弃它。如果丢弃,我需要重新打开o_form_button_edit 如果没有,我们什么也不做,因为我们已经调用了write方法。
这是一个代码片段,可以执行您想要的操作:
var FormController = require('web.FormController');
var ExtendFormController = FormController.include({
saveRecord: function () {
var res = this._super.apply(this, arguments);
if(this.modelName == 'project.task'){
var self = this;
res.then(function(changedFields){
console.log(changedFields);
console.log(self.modelName);
self.do_notify('title', 'message');
// you can call a method on the server like this
self._rpc({
model: self.modelName,
method: 'search_read',
fields: ['name'],
context: self.context,
}).then(function(result){
console.log('rpc result');
console.log(result);
})
});
}
return res;
}
});
点击保存后的截图:
同样需要继承createRecord()方法
一些注意事项:
- 第一个控制台日志行说:["name"] 是 changedFields 的值(我只在点击保存之前更改了任务的名称)
- 我正在处理 project.task 对象,但您可以将其更改为 sale.order :)
official documentation 非常有帮助
卡了3个小时了
当我的条件满足(_some 字段等于 something)时,我想显示一个弹出窗口(一个非阻塞的 ),而用户在 sale.order 模型(仅)的记录的表单视图上单击按钮 "Save"。
应该在执行保存按钮后触发弹出窗口它的默认操作,因为我需要检查数据库中是否满足条件。
我发现
我还发现我需要覆盖 o_form_button_edit 才能进行更改,但我不知道该怎么做,也不知道它是否对其他型号,因为其他人使用它。
this.$buttons.on('click', '.o_form_button_edit', this._onEdit.bind(this));
不知道我的方法好不好?如果没有,你能推荐另一个吗?
你能帮助我吗?非常感谢。
PS :我需要一个弹出窗口,因为用户可以在保存记录时接受他的更改或丢弃它。如果丢弃,我需要重新打开o_form_button_edit 如果没有,我们什么也不做,因为我们已经调用了write方法。
这是一个代码片段,可以执行您想要的操作:
var FormController = require('web.FormController');
var ExtendFormController = FormController.include({
saveRecord: function () {
var res = this._super.apply(this, arguments);
if(this.modelName == 'project.task'){
var self = this;
res.then(function(changedFields){
console.log(changedFields);
console.log(self.modelName);
self.do_notify('title', 'message');
// you can call a method on the server like this
self._rpc({
model: self.modelName,
method: 'search_read',
fields: ['name'],
context: self.context,
}).then(function(result){
console.log('rpc result');
console.log(result);
})
});
}
return res;
}
});
点击保存后的截图:
同样需要继承createRecord()方法
一些注意事项:
- 第一个控制台日志行说:["name"] 是 changedFields 的值(我只在点击保存之前更改了任务的名称)
- 我正在处理 project.task 对象,但您可以将其更改为 sale.order :)
official documentation 非常有帮助