Prasyarat
Saya memiliki 2 widget khusus yang memperpanjang widget induk yang sama.
- Widget induk:
Magento_ConfigurableProduct/js/configurable
- Widget Khusus Pertama:
Vendor_AModule/js/configurable
- Widget Kustom Kedua:
Vendor_BModule/js/configurable
Widget Khusus Pertama require-config.js
:
var config = {
map: {
'*': {
configurable: 'Vendor_AModule/js/configurable'
}
}
};
JS Widget Kustom Pertama:
define([
'jquery',
'mage/translate',
'Magento_ConfigurableProduct/js/configurable'
], function ($) {
$.widget('vendor.configurable_awidget', $.mage.configurable, {
/**
* {@inheritDoc}
*/
_configureElement: function (element) {
this._super(element);
alert('Custom widget A is triggered!');
}
});
return $.vendor.configurable_awidget;
});
Widget Kustom Kedua require-config.js
:
var config = {
map: {
'*': {
configurable: 'Vendor_BModule/js/configurable'
}
}
};
Widget Kustom Kedua JS:
define([
'jquery',
'mage/translate',
'Magento_ConfigurableProduct/js/configurable'
], function ($) {
$.widget('vendor.configurable_bwidget', $.mage.configurable, {
/**
* {@inheritDoc}
*/
_configureElement: function (element) {
this._super(element);
alert('Custom widget B is triggered!');
}
});
return $.vendor.configurable_bwidget;
});
Langkah-langkah mereproduksi
Saya membuka halaman muka produk yang dapat dikonfigurasi.
Hasil yang diharapkan
Saya melihat keduanya Custom widget B is triggered!
dan Custom widget A is triggered!
waspada.
Hasil Aktual
Saya hanya melihat Custom widget B is triggered!
waspada.
Pertanyaan
Bagaimana seharusnya kode membuat halaman depan produk yang dapat dikonfigurasi menampilkan peringatan kedua widget?
sumber
mixin
AWidget
kode Anda, bagaimana cara mendaftarBWidget
?BWidget
akan diimplementasikan sama denganAWidget
.Pastikan Modul khusus dimuat setelah yang lain
module.xml
Kami bisa check-in
app/etc/config.php
. Modul khusus Anda harus "lebih rendah" daripada yang lain.Kami dapat menghapus modul khusus dari
setup_module
tabel. Dan kemudian, jalankan perintah upgrade setup lagi untuk memesan ulang urutan modul.Kami perlu memastikan js kustom adalah "tingkat lebih rendah" dari yang lain di
requirejs-config.js
.pub / static / _requirejs / frontend / Magento / luma / en_US / requireejs-config.js
Deklarasikan Modul B
Karena widget A telah "diganti" widget Magento default sudah. Jadi, di Modul B, kita perlu memuat widget A dan "menimpanya" .
app / code / Vendor / BModule / view / frontend / requireejs-config.js
app / code / Vendor / BModule / view / frontend / web / js / configurable.js
Bagaimanapun, kita perlu menjalankan penyebaran konten statis lagi.
Kita dapat membaca lebih lanjut di sini: https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/#using-_super-and-_superapply-to-access-parents
sumber