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?
Réponses:
Il existe deux méthodes:
1. Créez un nouveau modèle (par la création d'un nouveau module dans le pool local).
2. Pour remplacer le modèle existant du module spécifique souhaité.
la source
Vous pouvez définir
<sequence>
dans module.xml du module CatalogInventory . Après cela, vous pouvez créer product_form.xml sousAvec le même chemin que dans CatalogInventory . Cela remplacera la configuration dont vous aviez besoin.
Je voudrais donner des exemples, mais je ne sais pas ce dont vous avez besoin ici. PS vous n'avez pas besoin d'ajouter d'autres éléments dont vous n'avez pas besoin dans votre XML . ils seront pris de la configuration parent XML .
la source