如何更改Magento 2中的现有模态?


36

我正在尝试更改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-attribute可能有一些用它做。

那有什么呢?谁能告诉我修改Magento 2中现有模态内容的正确方法是什么?

编辑:

我找到了有关如何实现我要实现的目标的解决方案或解决方法(尚不确定)。事实证明,如果设置sortOrder10000,则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
到目前为止,这是定制此类Ui组件的唯一方法。PHP修饰符。
Toan Nguyen

2
@Giel Berkers您的问题很好,但是很遗憾,我不知道如何回答。幸运的是,我有足够的声誉来悬赏您的问题,以吸引认识您的人。我的种类。
告别堆栈交换

Answers:


1

有两种方法:
1.创建新模型(通过在本地池中创建新模块)
2.覆盖所需特定模块的现有模型。


0

您可以<sequence>CatalogInventory模块的module.xml中进行设置。之后,您可以在下面创建product_form.xml

app / code / 您的 / 模块 /view/adminhtml/ui_component/product_form.xml

使用与CatalogInventory中相同的路径。这将替换您需要的配置。

我想提供任何示例,但我不知道您在这里需要什么。PS,您不需要在XML中添加不需要的其他元素。它们将从父xml配置中获取。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.