Odoo V15中如何继承web.sign_name_and_signature并修改签名模态框?
问题描述
尝试继承Odoo签名模块的模态对话框,想移除其中的「绘图」和「自动」选项,但一直没法实现——查下来发现对应的模型在web模块加载完成后被删除了。

解决思路
遇到这种原组件被销毁导致无法直接继承的情况,你可以试试下面几种方案:
- 直接Patch组件逻辑:不用继承,直接通过Odoo的
include方法修改签名对话框的初始化逻辑,过滤掉不需要的选项。代码示例:
odoo.define('your_module.signature_dialog_patch', function(require) { "use strict"; const SignatureDialog = require('signature.SignatureDialog'); SignatureDialog.include({ init: function(parent, options) { this._super(parent, options); // 移除绘图和自动模式选项 this.options.modes = this.options.modes.filter(mode => mode !== 'draw' && mode !== 'auto'); }, }); });
- 替换原组件:如果patch不生效,就直接重新定义一个不含「绘图」「自动」选项的签名对话框组件,然后在模块里注册替换掉原组件。
- 调整模块加载顺序:确保你的自定义模块依赖
web和signature模块,在manifest里声明:
'depends': ['web', 'signature'],
关键要保证你的修改代码在原组件被销毁前执行,这样才能生效。
内容的提问来源于stack exchange,提问作者Alain Pierre KOUAKOU
相关产品推荐
相关产品推荐

