как расширить файлы .js и .html в Magento 2
-
28-09-2020 - |
Вопрос
я продлеваю customer address
для этого мне придется изменить/расширить vendor/Magento/module-ui
файлы ядра.
то есть
root/vendor/magento/module-ui/view/base/web/js/form/components/collection.js
и
root/vendor/magento/module-ui/view/base/web/templates/form/components/collection.html
Когда я изменил основные файлы, все работает нормально, но это не лучшая процедура/идея для расширения.
Поэтому я создал имя поставщика как Magento
в root/app/code/
и я поместил измененные выше файлы в ту же локальную папку.
то есть
root/app/code/magento/module-ui/view/base/web/js/form/components/collection.js
и
root/app/code/magento/module-ui/view/base/web/templates/form/components/collection.html
После размещения этих файлов я очистил кеш.Но все равно мои изменения не отображаются.
я побежал php bin/magento setup:static-content:deploy
команда тоже, но не повезло.
Не могли бы вы подсказать мне, как это сделать?
Решение 2
Наконец-то добился своего.
Создавать requirejs-config.js
файл из Обучение/HelloWorld/просмотр/база и вставьте код ниже
var config = {
map: {
'*': {
'Magento_Ui/js/form/components/collection':'Learning_HelloWorld/js/form/components/collection'
}
}
};
Создавать collection.js
файл из Обучение/HelloWorld/просмотр/база/веб/js/форма/компоненты скопируйте основной код и измените его.
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'underscore',
'mageUtils',
'uiRegistry',
'uiComponent',
'uiLayout',
'Magento_Ui/js/modal/confirm'
], function (_, utils, registry, Component, layout, confirm) {
'use strict';
var childTemplate = {
parent: '${ $.$data.name }',
name: '${ $.$data.childIndex }',
dataScope: '${ $.name }',
nodeTemplate: '${ $.$data.name }.${ $.$data.itemTemplate }'
};
return Component.extend({
defaults: {
lastIndex: 0,
template: 'Learning_HelloWorld/form/components/collection'
},
/* my custom methods */
sendAddress: function (elem) {
var self = this;
self._sendAddress(elem);
},
/* my custom methods */
_sendAddress: function (elem) {
this.bubble('update');
}
});
});
Создавать collection.html
файл из Обучение/HelloWorld/представление/база/веб/шаблон/форма/компоненты путь, вставьте основной код и измените его
<div class="ui-tabs">
<!-- My Extra html code -->
<button type="button" data-bind="click: $parent.sendAddress.bind($parent, element)">
Send this Address
</button>
</div>
Теперь выполните приведенные ниже команды.
- настройка: обновление
- настройка: статическое содержимое: развертывание
Теперь это будет работать.
Не стесняйтесь спрашивать, есть ли какие-либо вопросы.
Другие советы
Один модуль зарегистрирован по одному пути, поэтому он может читать от поставщика, но не может из приложения/кода.