Какой js используется при добавлении нового адреса клиента в Magento 2?
В Magento 2 при создании нового клиента есть вкладка "Адрес", и когда я нажимаю "новый адрес", запускается js, который отображает поле адреса, но я не знаю, какое из них, я хочу расширить этот js, чтобы я мог вставить свою пользовательскую функцию из своего расширения,
Вот рисунок добавления нового адреса и элемента проверки:
Когда я нажимаю добавить новый адрес, есть 2 файла, которые запускаются js, и я хочу знать, какой js вызывает их
РЕДАКТИРОВАТЬ
Я пробовал добавлять миксин, requirejs-config.js :
var config = {
config: {
mixins: {
'Magento_Ui/js/form/components/collection': {
'NamespacE_Module/js/form/components/collection-mixin': true
}
}
};
Collection-mixin.js :
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'jquery',
'mage/utils/wrapper'
], function ($, wrapper) {
'use strict';
return function(collection){
var newFunction = collection.addChild;
var newFunction = wrapper.wrap(newFunction, function(original){
//do extra stuff
console.log('before');
//call original method
var result = original();
console.log('after');
//do extra stuff
//return original value
return result;
});
collection.addChild = newFunction;
return collection;
};
});
Функция, которую я хочу добавить, находится после функции addChild, которая является исходной функцией из collection.js
1 answers
Вы можете переопределить файл Magento_Ui/js/form/components/collection.js
в своем модуле.
И ваш файл requirejs-config.js
должен быть ниже
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
var config = {
map: {
'*': {
'Magento_Ui/js/form/components/collection':'[Namespace]_[VendorName]/js/form/components/collection'
}
}
};
В вашем файле collection.js
и обновите код ниже.
sayHello:function(){
alert('simple guy')
},
/**
* Creates new item of collection, based on incoming 'index'.
* If not passed creates one with 'new_' prefix.
*
* @param {String|Object} [index] - Index of a child.
* @returns {Collection} Chainable.
*/
addChild: function (index) {
this.childIndex = !_.isString(index) ?
'new_' + this.lastIndex++ :
index;
layout([utils.template(childTemplate, this)]);
this.sayHello();
return this;
},
После завершения этого,
Вам нужно удалить pub/static/adminhtml/
и pub/static/_requirejs/adminhtml/
.
И выполните команду php bin/magento setup:static-content:deploy
.
Наконец, откройте одну из страниц клиента, попробуйте нажать на Добавить новый адрес.
Дайте мне знать, если у вас есть какая-либо информация.