Tôi đang cố gắng thay đổi hành vi của một Modal (không phải Model) trong Magento 2.
Phương thức được đề cập là advanced_inventory_modal
, được khai báo module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Bây giờ tôi biết tôi có thể sử dụng Công cụ sửa đổi trong nhóm sản phẩm-mẫu-sửa đổi-nhóm:
<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>
... và sử dụng modifyMeta()
-method trong công cụ sửa đổi của tôi để thao tác cấu hình XML, nhưng vì một số lý do, phương thức kiểm kê không có trong dữ liệu được cung cấp ở đây.Đó cũng không phải là Các sortOrder
vấn đề liên quan vì tôi đã đặt mức đó lên cao.sortOrder
thuộc tính có thể có một cái gì đó để làm với nó.
Vì vậy, những gì cho? Ai đó có thể cho tôi biết cách thích hợp để sửa đổi nội dung của một phương thức hiện có trong Magento 2 không?
Chỉnh sửa:
Tôi tìm thấy một giải pháp hoặc cách giải quyết (chưa chắc chắn) về cách đạt được những gì tôi đang cố gắng đạt được. Hóa ra nếu tôi đặt sortOrder
thành 10000 tôi có một số dữ liệu trong modifyMeta()
phương thức -a mà tôi có thể sử dụng:
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?