我尝试覆盖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主题并且只安装了示例数据和我的模块。
改变你的路径
/app/code/myself/test/Web/就是/view/form/element/email.就是
至
/app/code/myself/test/view/frontend/Web/就是/view/form/element/email.就是
然后清除缓存运行内容部署并再试一次..`
问题出在您用于执行覆盖的路径中。
将文件位置更改为下面给出的路径,它将适合您。
/app/code/Magento/checkout/view/frontend/Web/就是/view/form/element/email.就是
不要忘记刷新缓存。