覆盖Magento2结帐中的js文件

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

我尝试覆盖magento2 checkout中的js文件。

我想覆盖/vendor/magento/module-checkout/view/frontend/web/js/view/form/element/email.js

所以我将模块中的文件复制到:/app/code/Myself/Test/view/frontend/web/js/view/form/element/email.js

我在/app/code/Myself/Test/view/frontend/web/js/view/form/element/email.js做了一个小改动:

        /**
     * Callback on changing email property
     */
    emailHasChanged: function () {
        var self = this;

        clearTimeout(this.emailCheckTimeout);

        if (self.validateEmail()) {
            quote.guestEmail = self.email();
            checkoutData.setValidatedEmailValue(self.email());
            $.cookie("checkoutemail", self.email()); // <--- this is the change
        }
        this.emailCheckTimeout = setTimeout(function () {
            if (self.validateEmail()) {
                self.checkEmailAvailability();
            } else {
                self.isPasswordVisible(false);
            }
        }, self.checkDelay);

        checkoutData.setInputFieldEmailValue(self.email());
    },

文件的其他部分未更改。

然后我创建了/app/code/Myself/Test/view/frontend/requirejs-config.js

var config = {
    map: {
        '*':
            {
                'Magento_Checkout/js/view/form/element/email.js':'Myself_Test/js/view/form/element/email.js'
            }
    }
};

在这个requirejs-config.js我不确定,路径从哪里开始。所以我也尝试过这样:'Magento_Checkout/web/js/view/form/element/email.js':'Myself_Test/web/js/view/form/element/email.js'

但覆盖不起作用。原始的email.js将在结帐时加载。

我在更改后运行了setup:upgrade命令,我的Magento2 Shop处于开发人员模式,使用Luma主题并且只安装了示例数据和我的模块。

javascript magento2
2个回答
0
投票

改变你的路径

/app/code/myself/test/Web/就是/view/form/element/email.就是

/app/code/myself/test/view/frontend/Web/就是/view/form/element/email.就是

然后清除缓存运行内容部署并再试一次..`


0
投票

问题出在您用于执行覆盖的路径中。

将文件位置更改为下面给出的路径,它将适合您。

/app/code/Magento/checkout/view/frontend/Web/就是/view/form/element/email.就是

不要忘记刷新缓存。

© www.soinside.com 2019 - 2024. All rights reserved.