Magento 2:如何使用参数在 UI 组件中实现验证

问题描述

好的。每个人都知道如何通过 XML 向 ui 组件字段添加验证规则。不幸的是,我找不到任何似乎知道如何实现需要一两个参数的规则的人。我确信知识就在那里,但没有人问过这个问题。所以就是这里了。

我希望为 textarea 实现 min-words 验证规则。我有这样的事情:

<field name="text_area">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            ...
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
                <item name="min-words" xsi:type="array">
                    <item name="length" xsi:type="number">10</item>
                </item>
            </item>
            ...
        </item>
    </argument>
</field>

但我猜,这不太奏效。我很接近,但无法弄清楚“长度”参数真正应该是什么,查看 rules.js 文件并没有提供任何线索。

解决方法

所以对于 min-words 规则,我发现它很简单:

<item name="min-words" xsi:type="number">10</item>

看过参数的其他实现(不在验证规则中),我想我会为 range-words 规则尝试这个,并发现了这种格式:

<item name="range-words" xsi:type="array">
   <item name="0" xsi:type="number">5</item>
   <item name="1" xsi:type="number">10</item>
</item>

这种格式将提供类似的需要参数的规则,例如 zip-range,validate-number-range,validate-digits-range,validate-range,validate-date-range,validate-item-quantity,validate-file-type。注意使用 name="0" 作为每个条目的数组索引。