我正在尝试更改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中现有模态内容的正确方法是什么?
编辑:
我找到了有关如何实现我要实现的目标的解决方案或解决方法(尚不确定)。事实证明,如果设置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
到目前为止,这是定制此类Ui组件的唯一方法。PHP修饰符。
—
Toan Nguyen
@Giel Berkers您的问题很好,但是很遗憾,我不知道如何回答。幸运的是,我有足够的声誉来悬赏您的问题,以吸引认识您的人。我的种类。
—
告别堆栈交换