odoo 通过Javascript显示或隐藏form自带按钮

实践环境

Odoo 14.0-20221212 (Community Edition)

需求描述

如下,根据条件对form视图自带按钮的显示、隐藏进行控制

odoo 通过Javascript显示或隐藏form自带按钮

代码实现

隐藏、显示编辑和创建按钮为例

odoo14/custom/estate/static/src/js/hide_or_show_form_button.js

function isHideEditButton(arg){ // 自定义函数,用途参见下文
    if (arg === 'Sold') {
        return true
    }
    return false
}

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

    let modelConfigs = {
        'estate.property': { // form表单视图归属模型,即需要对按钮的显示做管控的模型名称
             /* hideEditButton hideCreateButton的值可以简单理解为eval函数的参数,形如 eval(arg),整个表达式计算结果为bool值
             值为真则表示需要隐藏按钮,否则显示按钮
             如果不配置hideEditButton键,则表示显示编辑按钮,类似的,如果不配置hideCreateButton键,则显示创建按钮
             */
            'hideEditButton': 'isHideEditButton(this.renderer.state.data.state)', // 可选,是否隐藏编“Edit”编辑按钮 字符串类型
            'hideCreateButton': "this.renderer.state.data.state === 'Sold'", // 可选,是否隐藏“Create”创建按钮 字符串类型
        }
    };

    let FormController = require('web.FormController');

    FormController.include({
        updateButtons: function(){
            let res = this._super.apply(this, arguments);

            if (modelConfigs.hasOwnProperty(this.modelName)) {
                // 控制显示或者隐藏编辑按钮
                if (eval(modelConfigs[this.modelName].hideEditButton)) {
                    this.$buttons.find('.o_form_button_edit').hide();
                } else {
                    this.$buttons.find('.o_form_button_edit').show();
                }
           
                // 控制显示或者隐藏创建按钮
                if (eval(modelConfigs[this.modelName].hideCreateButton)) {
                    this.$buttons.find('.o_form_button_create').hide();
                } else {
                    this.$buttons.find('.o_form_button_create').show();
                }
            }
            return res;
        }
    });
})

说明:

  • 如果需要隐藏其它自带按钮、或自定义按钮,可以通过查看form视图的html结构,依葫芦画瓢。
  • 根据实际需求,可以通过在js中打印this对象,以获取更多判断是否隐藏、显示按钮的有用信息。

加载自定义js

odoo14customestateviewswebclient_templates.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="assets_common" inherit_id="web.assets_common" name="Backend Assets (used in backend interface)">
         <xpath expr="//script[last()]" position="after">
             <script type="text/javascript" src="/estate/static/src/js/hide_or_show_form_button.js">
         </xpath>
    </template>
</odoo>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:odoo 通过Javascript显示或隐藏form自带按钮 - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • odoo wizard界面显示带复选框列表及勾选数据获取

    实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的”选取ffers”按钮),弹出一个向导(wizard)界面,并将详情页中内联tree视图(”Offers” Tab页)的列表记录展示到向导界面,且要支持复选框,…

    python 2023年4月22日
    00
  • odoo 给form表单视图内联列表添加按钮

    实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 模块文件组织结构 说明:为了更好的表达本文主题,一些和主题无关的文件、代码已略去 odoo14\custom\estate │ __init__.py │ __manifest__.py │ ├─models │ estate_customer.py │ est…

    2023年3月31日
    00
  • odoo 开发入门教程系列-添加修饰

    添加修饰 我们的房地产模块现在从商业角度来看是有意义的。我们创建了特定的视图,添加了几个操作按钮和约束。然而,我们的用户界面仍然有点粗糙。我们希望为列表视图添加一些颜色,并使一些字段和按钮有条件地消失。例如,当房产已出售或取消时,“已售出”和“取消”按钮应消失,因为此时不再允许更改状态。 参考: 文档关联的主题可以查看 Views. 内联视图(Inline …

    python 2023年4月18日
    00
  • 网络基础 CAS协议学习总结

    架构介绍 系统组件 CAS服务器和客户端构成了CAS系统体系结构的两个物理组件,它们通过各种协议进行通信。 CAS服务器 CAS服务器是基于Spring Framework构建的Java servlet,其主要职责是通过签发和验证ticket来验证用户并授予对启用CAS认证了的服务(通常称为CAS客户端)的访问权限。当用户成功登录(即认证通过)时,CAS服务…

    Java 2023年5月8日
    00
  • Odoo 通过Javascript调用模型中自定义方法

    实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 在js脚本函数中调用模型中自定义方法: this._rpc({ model: ‘demo.wizard’, // 模型名称,即模型类定义中 _name 的值 method: ‘action_select_records_via_checkbox’, // 模型中…

    Python开发 2023年3月31日
    00
  • Python Requets库学习总结

    快速开始 发送请求 >>> import requests >>> r = requests.get(‘https://api.github.com/events’) # GET >>> r = requests.post(‘https://httpbin.org/post’, data={‘key’: …

    python 2023年4月30日
    00
  • odoo 开发入门教程系列-继承(Inheritance)

    继承(Inheritance) Odoo的一个强大方面是它的模块化。模块专用于业务需求,但模块也可以相互交互。这对于扩展现有模块的功能非常有用。例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的财产列表。 在介绍特定的Odoo模块继承之前,让我们看看如何更改标准CRUD(创建、检索,更新或删除)方法的行为 Python继承(Python …

    python 2023年4月17日
    00
  • Odoo 菜单定义和修改学习总结

    odoo菜单定义和修改学习总结 环境 odoo-14.0.post20221212.tar 定义菜单 方式1: <?xml version=”1.0″?> <odoo> <menuitem id=”root_menu_id” name=”TopMenu” web_icon=”estate,static/img/icon.png”…

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部