Ich versuche, das Verhalten eines Modals (nicht eines Modells) in Magento 2 zu ändern.
Das fragliche Modal ist advanced_inventory_modal
, deklariert in module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Jetzt weiß ich, dass ich einen Modifikator im Produkt-Formular-Modifikator-Pool verwenden kann:
<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>
... und verwenden Sie die modifyMeta()
-Methode in meinem Modifikator, um die XML-Konfiguration zu bearbeiten. Aus irgendeinem Grund ist das Inventar-Modal in den hier bereitgestellten Daten jedoch nicht vorhanden.Es ist auch kein Das sortOrder
Problem, da ich es bereits sehr hoch angesetzt habe.sortOrder
-Attribut könnte etwas damit zu tun haben.
Also was gibt es? Kann mir jemand sagen, wie der Inhalt eines vorhandenen Modals in Magento 2 richtig geändert werden kann?
Bearbeiten:
Ich habe eine Lösung oder Problemumgehung gefunden (noch nicht sicher), wie das erreicht werden kann, was ich erreichen möchte. Wenn ich sortOrder
auf 10000 setze , habe ich einige Daten in meiner modifyMeta()
-a-Methode, die ich verwenden kann:
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?