ฉันพยายามที่จะเปลี่ยนพฤติกรรมของ Modal (ไม่ Model) ในวีโอไอพี 2.
กิริยาช่วยในคำถามจะถูกประกาศในadvanced_inventory_modal
module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
ตอนนี้ฉันรู้ว่าฉันสามารถใช้ตัวดัดแปลงใน Product-form-modifier-pool:
<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>
... และใช้modifyMeta()
-method ในตัวแก้ไขของฉันเพื่อจัดการการกำหนดค่า XML แต่ด้วยเหตุผลบางอย่าง modal สินค้าคงคลังไม่ปรากฏในข้อมูลที่ให้ไว้ที่นี่มันไม่ใช่sortOrder
ปัญหาที่เกี่ยวข้องเนื่องจากฉันตั้งไว้สูงแล้วsortOrder
-attribute อาจมีสิ่งที่จะทำอย่างไรกับมัน
แล้วอะไรล่ะ ใครสามารถบอกฉันได้ว่าอะไรคือวิธีที่เหมาะสมในการปรับเปลี่ยนเนื้อหาของคำกริยาที่มีอยู่ใน Magento 2
แก้ไข:
ฉันพบวิธีแก้ปัญหาหรือวิธีแก้ปัญหา (ยังไม่แน่ใจ) เกี่ยวกับวิธีการบรรลุสิ่งที่ฉันพยายามบรรลุ ปรากฎว่าถ้าฉันตั้งไว้sortOrder
ที่10,000ฉันมีข้อมูลบางอย่างในmodifyMeta()
วิธีการ -a ของฉันที่ฉันสามารถใช้:
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?