Я намагаюся змінити поведінку Модалу (а не Моделі) в Magento 2.
Модаль, про який йде мова advanced_inventory_modal
, оголошено в module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Тепер я знаю, що можу використовувати Модифікатор у пулі форм-модифікаторів продукту:
<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>
... і використовувати modifyMeta()
-метод у моєму модифікаторі для маніпулювання конфігурацією XML, але чомусь модальний інвентар не присутній у даних, що надаються тут.Це також не sortOrder
пов'язана з проблемою, оскільки я вже встановив такий шлях.sortOrder
Атрибуту по, можливо , що - то робити з цим.
То що дає? Хтось може сказати мені, що є правильним способом змінити вміст існуючого модалу в Magento 2?
Редагувати:
Я знайшов рішення чи вирішення (ще не впевнений) щодо того, як досягти того, що я намагаюся досягти. Виявляється, що якщо встановити sortOrder
на 10000 у мене є деякі дані в моєму modifyMeta()
-a метод , який я можу використовувати:
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?