我的magento 2安装中有一个自定义实体。
该实体中的字段之一是multiselect类型,包含所有国家/地区的列表。
我将ui组件用于我的管理表单。
由于选择中大约有200条记录,我不想使用多选字段,因为它不那么容易使用。
因此,我在添加/编辑产品管理部分中的类别类别中创建了一个精美的多选之一。
看起来更好,但是我无法为其设置默认值。
这是我的配置(请注意default
配置项):
<field name="affected_countries" formElement="select" component="Magento_Ui/js/form/element/ui-select" sortOrder="100">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">article</item>
<item name="filterOptions" xsi:type="boolean">true</item>
<item name="chipsEnabled" xsi:type="boolean">true</item>
<item name="disableLabel" xsi:type="boolean">true</item>
<item name="default" xsi:type="string">RO,MD</item>
</item>
</argument>
<settings>
<elementTmpl>ui/grid/filters/elements/ui-select</elementTmpl>
<dataType>text</dataType>
<label translate="true">Affected Countries</label>
<dataScope>affected_countries</dataScope>
<componentType>field</componentType>
</settings>
<formElements>
<select>
<settings>
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>
</settings>
</select>
</formElements>
</field>
我希望选择放置在默认字段中的2个值:
如果我将元素转换为简单的多选,则效果很好。
<field name="affected_countries" formElement="multiselect" sortOrder="100">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">article</item>
<item name="default" xsi:type="string">RO,MD</item>
</item>
</argument>
<settings>
<dataType>text</dataType>
<label translate="true">Affected Countries</label>
<dataScope>affected_countries</dataScope>
</settings>
<formElements>
<multiselect>
<settings>
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>
</settings>
</multiselect>
</formElements>
</field>
我用这种格式default
设置
<item name="default" xsi:type="string">RO,MD</item>
而且这个还:
<item name="default" xsi:type="array">
<item name="MD" xsi:type="string">MD</item>
<item name="RO" xsi:type="string">RO</item>
</item>
还尝试了标签select
和标签multiselect
内部formElements
。
我所有的尝试都以失败告终。
按照此处的说明(文本,选择,日期,...),default
在其他任何类型的字段中使用设置都可以很好地工作。
对花式选择有什么建议吗?我错过了什么?
注意:我知道我可以在填充表单的数据提供程序中提供默认值,但是我试图避免这种情况,因为它看起来很丑陋,并且扩展性不强,并且与其余字段不一致。
您是否尝试过使用选项的ID?
—
Adrian Z.18年
MD和RO是选项的ID。就像我说的,它可以使用具有相同默认值的普通多重选择
—
Marius
<< items name =“ default” xsi:type =“ array”> </ items>
—
Idham Choudry
@IdhamChoudry我已经尝试过了。它在问题中是这样说的。
—
马里斯(Marius)
@LazyCoder对此有一个问题
—
Marius
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>
。您需要一个类似的类来实现,\Magento\Framework\Option\ArrayInterface
并具有一个称为的方法toOptionArray
,该方法返回带有您的值的数组。数组中的每个元素都必须像这样['value' => ..., 'label' => ...]