Estou tentando mudar o comportamento de um modal (não modelo) no Magento 2.
O modal em questão é advanced_inventory_modal
declarado em module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Agora eu sei que posso usar um modificador no pool de modificadores de forma de produto:
<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>
... e use o modifyMeta()
método-no meu modificador para manipular a configuração XML, mas por algum motivo, o modal de inventário não está presente nos dados fornecidos aqui.Também não é um O sortOrder
problema relacionado, já que eu já defini esse caminho alto.sortOrder
atributo-pode ter algo a ver com isso.
Então, o que dá? Alguém pode me dizer qual é a maneira correta de modificar o conteúdo de um modal existente no Magento 2?
Editar:
Encontrei uma solução ou solução alternativa (ainda não tenho certeza) sobre como alcançar o que estou tentando alcançar. Acontece que, se eu definir sortOrder
como 10000 , tenho alguns dados no meu modifyMeta()
método -a que posso usar:
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?