Odoo - 我的自定义按钮被重复多次

问题描述 投票:0回答:1

这就是结果

我正在开发 Odoo 版本 15。

我创建了一个用于打开向导的新按钮。 我的自定义按钮位于标题中“创建”按钮附近。

让我分享我的代码。

这是我的JS代码

自定义_create.js

odoo.define('button_near_create.kanban_button_crm', function(require) {
    "use strict";

    var KanbanController = require('web.KanbanController');
    var KanbanView = require('web.KanbanView');
    var viewRegistry = require('web.view_registry');

    var KanbanButton = KanbanController.extend({
        buttons_template: 'button_near_create.button.crm',
        events: _.extend({}, KanbanController.prototype.events, {
            'click .open_wizard_action_kanban_crm': '_OpenWizardKanban',
        }),
        _OpenWizardKanban: function () {
        this.do_action({
            type: 'ir.actions.act_window',
            res_model: 'contact.wizard',
            name: 'Create Opportunity',
            view_mode: 'form',
            view_type: 'form',
            views: [[false, 'form']],
            target: 'new',
            res_id: false,
            context: {
                'form_view_ref': 'et_crm.crm_create_wizard_form'
            },
        });
    }
    });

    var ContactCreateKanbanController = KanbanView.extend({
        config: _.extend({}, KanbanView.prototype.config, {
            Controller: KanbanButton
        }),
    });

    viewRegistry.add('button_in_kanban_crm', ContactCreateKanbanController);
});

crm_custom_create.xml

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
   <t t-extend="KanbanView.buttons" t-name="button_near_create.button.crm">
       <t t-jquery="button" t-operation="replace">
               <button t-if="widget.modelName == 'crm.lead'"
                       class="btn btn-primary open_wizard_action_kanban_crm oe_highlight"
                       type="button">Search and Create</button>
       </t>
   </t>
</templates>

自定义_创建.xml

<odoo>
    <record id="crm_lead_kanban_custom_create_inherit_js_class" model="ir.ui.view">
        <field name="name">crm.lead.kanban.inherit</field>
        <field name="model">crm.lead</field>
        <field name="inherit_id" ref="crm.crm_case_kanban_view_leads"/>
        <field name="arch" type="xml">
            <xpath expr="//kanban" position="attributes">
                <attribute name="js_class">button_in_kanban_crm</attribute>
            </xpath>
        </field>
    </record>
</odoo>

清单.py

'data': [
        'views/custom_create.xml',
        'views/views.xml',
        'wizards/custom_create_wizard_view.xml',
    ],
    "assets": {
        'web.assets_backend': [
            '/et_crm/static/src/js/custom_create.js'
        ],
        'web.assets_qweb': [
            '/et_crm/static/src/xml/crm_custom_create.xml'
        ],
    }

这就是结果

我对联系人看板视图使用了相同的逻辑,并且效果非常好。 联系看板视图

odoo odoo-15
1个回答
0
投票

首先我找到了 Kanban.buttons 的源代码

<t t-name="KanbanView.buttons">
<div>
    <button t-if="!noCreate" type="button" t-attf-class="btn #{btnClass} o-kanban-button-new" title="Create record" accesskey="c">
        <t t-esc="create_text || _t('Create')"/>
    </button>
</div>

我仍然不明白这种重复的原因,但是当我看到这个时,我尝试用不同的方法添加我的按钮。我改变了逻辑

-> 查找按钮 -> 添加按钮

-> 找到 div -> 添加按钮到里面

<templates id="template" xml:space="preserve">
   <t t-extend="KanbanView.buttons" t-name="button_near_create.button.crm">
       <t t-jquery="div" t-operation="prepend">
               <button t-if="widget.modelName == 'crm.lead'"
                       class="btn btn-primary open_wizard_action_kanban_crm oe_highlight"
                       type="button">Search and Create</button>
       </t>
   </t>
</templates>
© www.soinside.com 2019 - 2024. All rights reserved.