[英]Override js file in the Magento2 checkout
我嘗試覆蓋 magento2 結帳中的 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 商店處於開發人員模式,使用 Luma 主題並且只安裝了示例數據和我的模塊。
我看到您正在向路徑添加文件擴展名。 刪除它,它應該可以工作。
var config = {
map: {
'*': {
'Magento_Checkout/js/view/form/element/email': 'Myself_Test/js/view/form/element/email'
}
}
};
這就是問題的答案。 下面的替代解決方案。
您可以擴展它並只更改其中的一部分,而不是覆蓋整個文件。 這樣,如果您將更新 Magento 2,並且您修改的其他一些方法將發生變化,您將不需要更新您的自定義文件。
如何擴展javascript文件? 在這種情況下 uiComponent
https://devdocs.magento.com/guides/v2.4/javascript-dev-guide/javascript/js_mixins.html#examples
改變你的路徑
/app/code/Myself/Test/web/js/view/form/element/email.js
到
/app/code/Myself/Test/view/frontend/web/js/view/form/element/email.js
然后清除緩存運行內容部署並重試..`
問題出在您用來進行覆蓋的路徑中。
將文件位置更改為下面給出的路徑,它將為您工作。
/app/code/Magento/Checkout/view/frontend/web/js/view/form/element/email.js
不要忘記刷新緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.