मैं Magento 2 में एक मॉडल (नहीं मॉडल) के व्यवहार को बदलने की कोशिश कर रहा हूँ।
प्रश्न में मोडल advanced_inventory_modal
घोषित किया गया है module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
।
अब मुझे पता है कि मैं उत्पाद-रूप-संशोधक-पूल में एक संशोधक का उपयोग कर सकता हूं:
<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()
XML कॉन्फ़िगरेशन में हेरफेर करने के लिए मेरे संशोधक में -method का उपयोग करें, लेकिन किसी कारण से, इन्वेंट्री मोडल यहां मौजूद डेटा में मौजूद नहीं है।यह भी एक sortOrder
संबंधित समस्या नहीं है क्योंकि मैं पहले से ही उस तरह से उच्च सेट करता हूं।sortOrder
-Attribute इसके साथ कुछ करने के लिए हो सकता है।
तो क्या देता है? क्या कोई मुझे बता सकता है कि Magento 2 में मौजूदा मॉडल की सामग्री को संशोधित करने का उचित तरीका क्या है?
संपादित करें:
मुझे एक समाधान या वर्कअराउंड मिला (अभी तक निश्चित नहीं है) कि मैं कैसे हासिल करने की कोशिश कर रहा हूं। यह पता चला है कि अगर मैं 10000 पर सेट sortOrder
करता हूं तो मेरे पास मेरे -ए पद्धति में कुछ डेटा है जिसका मैं उपयोग कर सकता हूं:modifyMeta()
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?