Я пытаюсь изменить поведение модального (не модельного) в Magento 2.
Модал, о котором идет речь advanced_inventory_modal
, объявлен в module-catalog-inventory/view/adminhtml/ui_component/product_form.xml
.
Теперь я знаю, что могу использовать модификатор в product-form-modifier-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>
... и использовать modifyMeta()
-method в моем модификаторе для манипулирования конфигурацией 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?
Ответы:
Есть два способа:
1. Создать новую модель (через создание нового модуля в локальном пуле)
2. Переопределить существующую модель конкретного модуля, который вы хотите.
источник
Вы можете установить
<sequence>
в module.xml из CatalogInventory модуля. После этого вы можете создать product_form.xml в разделеС тем же путем, что и в CatalogInventory . Это заменит необходимую вам конфигурацию.
Я хотел бы привести любые примеры, но я не знаю, что вам нужно здесь. PS вам не нужно добавлять другие элементы, которые вам не нужны в вашем XML . они будут взяты из родительской конфигурации xml .
источник