J'essaie de changer le comportement d'un modal (pas d'un modèle) dans Magento 2.
Le modal en question est advanced_inventory_modal
, déclaré dans module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Maintenant, je sais que je peux utiliser un modificateur dans le groupe product-form-modificateur-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>
... et utilisez la modifyMeta()
méthode -method de mon modificateur pour manipuler la configuration XML, mais pour une raison quelconque, le modal d'inventaire n'est pas présent dans les données fournies ici.Ce n’est pas non plus un L' sortOrder
problème lié au fait que j’ai déjà fixé ce niveau élevé.sortOrder
attribut pourrait avoir quelque chose à voir avec cela.
Alors qu'est-ce qui donne? Quelqu'un peut-il me dire quelle est la bonne façon de modifier le contenu d'un modal existant dans Magento 2?
Modifier:
J'ai trouvé une solution ou une solution de contournement (pas encore sûr) sur la façon d'atteindre ce que j'essaie de réaliser. Il se trouve que si je mets sortOrder
à 10000, il y a des données dans ma modifyMeta()
méthode -a que je peux utiliser:
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?