odoo 返回信息

odoo 执行方法返回信息,odoo只提供了报错信息返回,但是报错会回滚执行的方法,有没有可以运行方法成功后再返回提示信息的呢,

1.onchange方法是可以作为返回警告信息的,但是onchange方法必须由前端触发不太适用所有情况

@api.onchange('name')
def _onchange_name(self):
    return {'warning': {'title': '标题:', 'message': '警告信息'}}

2.使用OCA模块web_notify

def test(self):
    self.env.user.notify_success(message='My success message')

这个模块实现了从PY调用JS的方法在页面右上角展示一个小弹窗进行提示信息,
缺点是和报错返回的弹窗不是同一个东西,风格不统一

3.使用Dialog
odoo前端已经封装好了dialog: \odoo\addons\web\static\src\js\core\dialog.js
我们可以将这个封装为一个动作,然后可以在PY中调用

odoo.define('web_ir_actions_dialog_view', function (require) {
'use strict';

    var core = require('web.core');
    var Dialog = require('web.Dialog');

    function AlertDialog(parent, action) {
        var dialog = new Dialog(this, action.params);
        dialog.open();
    }

    core.action_registry.add("dialog", AlertDialog);
});

将上面这个js文件引入后,在PY中可以如下调用

def test_fun(self):
    return {
        'type': 'ir.actions.client',
        'tag': 'dialog',
        'params': {
             'title': '提示信息',
             '$content': '<h2 style="color:red; text-align:center; ">123456789</h2>',
             'size': 'extra-large',
            }
        }

tag标签一定是js文件中注册的 'dialog'
params可以填的参数有:

  • title: 弹窗的标题
  • $content 文本信息,需要写入html
  • size 弹窗大小,可选项有(由大到小):'extra-large', 'large', 'medium' 'small'
  • buttons 展示按钮,默认值是:[{text: _t("Ok"), close: true}],如果不想展示确认按钮可以传入[]

以上方法参考曹大文章

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容