實踐環境
Odoo 14.0-20221212 (Community Edition)
需求描述
如下,根據條件對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
odoo14\custom\estate\views\webclient_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="https://www.cnblogs.com/estate/static/src/js/hide_or_show_form_button.js">
</xpath>
</template>
</odoo>
作者:授客
微信/QQ:1033553122
全國軟體測驗QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額隨意,您的支持將是我繼續創作的源動力,打賞后如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測驗交流QQ群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544410.html
標籤:Python
上一篇:01Python變數的使用
下一篇:Python繪制神經網路模型圖
