如何覆盖 odoo 12 中的 _createStripeToken 函数

How to override the _createStripeToken function in odoo 12

我正在寻找一种方法来覆盖 odoo 12 中 payment_stripe_sca 模块的 _createStripeToken 函数。

我是这样做的,但是 console.log 没有显示。如果我将此控制台日志添加到原始控制台日志中,则会显示

    PaymentForm.include({

    /**
     * @override
     * @private
     * @param {Event} ev
     * @param {DOMElement} checkedRadio
     * @param {Boolean} addPmEvent
     */
    _createStripeToken: function (ev, $checkedRadio, addPmEvent) {
        console.log("Adfadsfasdfasdfas")
    }

})

您需要 patch 付款表格 class 并将 js 文件添加到前端资产 (web.assets_frontend)。

  • 覆盖 _createStripeToken 函数:

    odoo.define('stack_overflow.payment_form', function (require) {
        "use strict";
    
        var PaymentForm = require('payment.payment_form');
    
        PaymentForm.include({
            _createStripeToken: function (ev, $checkedRadio, addPmEvent) {
                var self = this;
                console.log("Adfadsfasdfasdfas");
                return this._super.apply(this, arguments);
            },
        });
    });
    
  • 将文件添加到前端资源:

    <template id="assets_frontend" inherit_id="web.assets_frontend" name="Payment Stripe SCA Assets">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/stack_overflow/static/src/js/payment_form.js"></script>
        </xpath>
    </template>
    

查看 assets management 了解详情。