Magento2:覆盖核心JS文件

时间:2019-04-23 11:34:17

标签: javascript magento2 checkout

我尝试在magento2结帐中覆盖js文件。

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

因此我将文件复制到模块中: /app/code/GMyself/Test/view/frontend/web/js/view/form/element/email.js

我在/app/code/GMyself/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/GMyself/Test/view/frontend/requirejs-config.js

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

在更改代码或重新安装模块之后,我确实按此顺序运行了以下命令:

sudo mv pub/static pub/static_backup_`date +%Y%m%d_%H%m%S`
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento cache:flush
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento setup:upgrade;
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento cache:flush
sudo /opt/local/bin/php71  -d memory_limit=4G ./bin/magento setup:di:compile

我的Magento处于开发人员模式,因此无需执行setup:static-content:deploy。但是我也尝试了deploy命令(带有-f选项)。

该文件在pub/static/frontend/Magento/luma/en_US/GMyself_Test/js/view/form/element/email.js中生成。

在结帐时,将加载原始文件,但不会加载我自己的email.js,因此不在我的浏览器的本地资源中(如我在Chrome Dev-Console中进行的检查)。 我的Chrome加载的全局生成的requirejs-config.js具有我在/app/code/GMyself/Test/view/frontend/requirejs-config.js中所做的条目。 我在浏览器控制台中没有错误。

作为一个小测试,我还尝试用/vendor/magento/module-checkout/view/frontend/web/js/checkout-data.js中的以下条目覆盖requirejs-config.js

var config = {
    "map": {
        '*':
            {
                checkoutData: 'GMyself_Test/js/checkout-data.js'
            }
    }
};

checkout-data.js位于此处: /app/code/GMyself/Test/view/frontend/web/js/checkout-data.js

结果与email.js文件相同。

0 个答案:

没有答案