Estoy tratando de cambiar el comportamiento de un Modal (no Modelo) en Magento 2.
El modal en cuestión es advanced_inventory_modal
, declarado en module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Ahora sé que puedo usar un Modificador en el conjunto de modificadores de forma de producto:
<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>
... y use el modifyMeta()
método-en mi modificador para manipular la configuración XML, pero por alguna razón, el modal de inventario no está presente en los datos que se proporcionan aquí.Tampoco es un los sortOrder
problema relacionado, ya que lo configuré de esa manera.sortOrder
atributo podría tener algo que ver con eso.
Entonces, ¿qué da? ¿Alguien puede decirme cuál es la forma correcta de modificar el contenido de un modal existente en Magento 2?
Editar:
Encontré una solución o solución alternativa (aún no estoy seguro) sobre cómo lograr lo que estoy tratando de lograr. Resulta que si configuro sortOrder
a 10000 tengo algunos datos en mi modifyMeta()
método -a que puedo 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?