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?