odoo以只读模式打开form视图,刷新浏览器以后变成了只读模式
问题描述:最近做项目的时候发现,我以只读模式打开tree视图的一条记录,进入form视图,点击浏览器的刷新按钮,form视图上方的编辑按钮显示出来了,并且该记录变成了可编辑状态
原因分析:浏览器刷新以后,视图重新渲染上方的按钮时出现问题.
解决方式:继承odoo底层路径为:odoo/addons/web/static/src/js/views/form下面的form_controller.js修改只读模式时的按钮渲染方式
在form标签中加入js_class属性:
 js_class="extend_form_view"
在static文件夹中新建文件extend_form_view.js
odoo.define('extend_form_view', function (require) {
    'use strict';
    var FormView = require('web.FormView');
    var FormController = require('web.FormController');
    var view_registry = require('web.view_registry');
    var core = require('web.core');
    var _t = core._t;
    var ExtendFromController = FormController.extend({
        renderButtons: function ($node) {
            var self = this;
            var $footer = this.footerToButtons ? this.$('footer') : null;
            var mustRenderFooterButtons = $footer && $footer.length;
            if (!this.defaultButtons && !mustRenderFooterButtons) {
                return;
            }
            this.$buttons = $('<div/>');
            if (self.mode === 'readonly') {
                if (mustRenderFooterButtons) {
                    this.$buttons.append($footer);
                }  else {
                    this.$buttons.on("click", ".o_form_button_return", function () {
                        self.trigger_up("history_back");
                    });
                }
            } else{
                if (mustRenderFooterButtons) {
                    this.$buttons.append($footer);
                } else {
                    this.$buttons.append(core.qweb.render("FormView.buttons", {widget: this}));
                    this.$buttons.on('click', '.o_form_button_edit', this._onEdit.bind(this));
                    this.$buttons.on('click', '.o_form_button_create', this._onCreate.bind(this));
                    this.$buttons.on('click', '.o_form_button_save', this._onSave.bind(this));
                    this.$buttons.on('click', '.o_form_button_cancel', this._onDiscard.bind(this));
                    //返回按钮
                    this.$buttons.on("click", ".o_form_button_return", function () {
                        self.trigger_up("history_back");
                    });
                    this._updateButtons();
                }
            }
            this.$buttons.appendTo($node);
        },
    })
    var extend_form_view = FormView.extend({
        config: _.extend({}, FormView.prototype.config, {
            Controller: ExtendFromController
        })
    });
    view_registry.add('extend_form_view', extend_form_view);
    return extend_form_view
});
在/views/webassets.xml文件中引入新增的js文件路径即可
		<script type="text/javascript" src="/fnt_fm1212/static/js/extend_form_view.js"></script>
                    
                
                
            
        
浙公网安备 33010602011771号