首页 > 解决方案 > 如何覆盖 odoo 12 中的 _createStripeToken 函数

问题描述

我正在寻找一种方法来覆盖 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")
    }

})

标签: javascriptodoo-12

解决方案


您需要修补支付表单类并将 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>
    

详情请查看资产管理


推荐阅读