odoo12自定义按钮覆盖底部自带按钮,xml底部footer标签覆盖问题

问题: odoo自身定义了底部和顶部的按钮,底部按钮定义在footer标签中。当想要覆盖odoo本来的底部按钮时,只需要自定义一个footer标签就可以

解决办法:自定义footer标签

  1. 在模型对应的xml文件的form视图中新增widget标签
    <form> <group> <widget name="tree_buttons" template="inspect_record_form_button"/> </group> </form>

2、在模型template中新增模型inspect_record_form_button





`

3、定义新的js文件tree_buttons.js获取前端视图的点击事件
`odoo.define('tree_buttons', function (require) {
"use strict";

var Widget = require('web.Widget');
var widget_registry = require('web.widget_registry');
var data_manager = require('web.data_manager');
var session = require('web.session');

var tree_buttons = Widget.extend({
    template: 'tem_tree_buttons',

    events: {
        'click .trigger': function (event) {
            // event.stopPropagation();
            this.trigger_up("button_clicked", {
                attrs: {
                    type: $(event.currentTarget).attr("type"),
                    name: $(event.currentTarget).attr("name")
                },
                record: this.record
            });
        },
        'click .commit': function (event) {
            var self = this.__parentedParent.__parentedParent.__parentedParent;
            if (self.form_view) {
                debugger
                return self.form_view.saveRecord(self.form_view.handle, {
                stayInEdit: true,
                reload: false,
                savePoint: self.shouldSaveLocally,
                viewType: 'form',
            }).then(function (changedFields) {
                // record might have been changed by the save (e.g. if this was a new record, it has an
                // id now), so don't re-use the copy obtained before the save
                var record = self.form_view.model.get(self.form_view.handle);
                    self.on_saved(record, !!changedFields.length);
                }).then(self.close.bind(self));
            } else {
                debugger
                this.trigger_up("button_clicked", {
                    attrs: {
                        type: 'object',
                        name: 'footer_button'
                    },
                    record: this.record
                });
            }

        },
        'click .cancel': function (event) {
            this.do_action({type: 'ir.actions.act_window_close'})
        },

    },

    init: function (parent, options, params) {
        this._super(parent, options, params);
        this.id = options.res_id;
        this.model = options.model;
        this.data = options.data;
        this.template = params.attrs.template;
        this.record = options;
    }

});
widget_registry.add('tree_buttons', tree_buttons);
return tree_buttons

});`

至此就完成了前端底部按钮的自定义所有流程。

posted @ 2020-08-19 16:19  鹿哥  阅读(425)  评论(0)    收藏  举报