Saya mencoba mengubah perilaku Modal (bukan Model) di Magento 2. Modal yang
dimaksud adalah advanced_inventory_modal
, dinyatakan dalam module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Sekarang saya tahu saya bisa menggunakan Pengubah dalam kumpulan produk-bentuk-pengubah:
<virtualType name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool">
<arguments>
<argument name="modifiers" xsi:type="array">
<item name="hf_quantity" xsi:type="array">
<item name="class" xsi:type="string">Vendor\Module\Ui\DataProvider\Product\Form\Modifier\Quantity</item>
<item name="sortOrder" xsi:type="number">100</item>
</item>
</argument>
</arguments>
</virtualType>
... dan gunakan modifyMeta()
-metode dalam modifier saya untuk memanipulasi konfigurasi XML, tetapi untuk beberapa alasan, modal inventaris tidak ada dalam data yang disediakan di sini.Ini juga bukan The sortOrder
masalah yang terkait karena saya sudah menetapkan itu tinggi.sortOrder
-attribute mungkin ada hubungannya dengan itu.
Jadi apa yang menyebabkannya? Adakah yang bisa memberi tahu saya apa cara yang tepat untuk mengubah konten modal yang ada di Magento 2?
Edit:
Saya menemukan solusi atau solusi (belum yakin) tentang cara mencapai apa yang ingin saya capai. Ternyata jika saya atur sortOrder
ke 10000 saya memiliki beberapa data dalam modifyMeta()
metode-saya yang dapat saya gunakan:
public function modifyMeta(array $meta)
{
if ($path = $this->arrayManager->findPath('quantity_and_stock_status_qty', $meta, null, 'children')) {
$this->arrayManager->remove(
$path . '/children/qty/arguments/data/config/validation/validate-digits',
$meta
);
}
if ($path = $this->arrayManager->findPath('advanced_inventory_modal', $meta)) {
$meta = $this->arrayManager->merge(
$path . '/children/stock_data/children/qty/arguments/data/config',
$meta,
['validation' => ['validate-digits' => false]]
);
}
return $meta;
}
Note that the `advanced_inventory_modal` node is not yet complete, but my best guess is that the later addition of the modal merges with these settings, but doesn't override it. Could be wrong though, perhaps someone could share some more light on how this mechanism works?
Jawaban:
Ada dua cara:
1. Buat model baru (melalui pembuatan modul baru di kumpulan lokal)
2. Untuk mengganti model yang ada dari modul tertentu yang Anda inginkan.
sumber
Anda dapat mengatur
<sequence>
di module.xml dari CatalogInventory modul. Setelah itu, Anda dapat membuat product_form.xml di bawahDengan jalur yang sama seperti di katalog katalog . Ini akan menggantikan konfigurasi yang Anda butuhkan.
Saya ingin memberikan contoh tetapi saya tidak tahu apa yang Anda butuhkan di sini. NB Anda tidak perlu menambahkan elemen lain yang tidak Anda butuhkan dalam XML Anda . mereka akan diambil dari konfigurasi xml induk .
sumber