내 magento 2 설치에 사용자 지정 엔터티가 있습니다.
이 엔티티의 필드 중 하나는 multiselect 유형이며 모든 국가의 목록을 포함합니다.
관리자 양식에 ui-components를 사용하고 있습니다.
선택에 약 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>
그리고 기본 필드에 두 가지 값이 선택 될 것으로 기대합니다.
요소를 간단한 다중 선택으로 바꾸면 잘 작동합니다.
<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
대로 다른 유형의 필드에서 설정을 사용하면 (텍스트, 선택, 날짜 등 ...) 잘 작동합니다.
멋진 선택에 대한 제안이 있으십니까? 내가 놓친 것?
참고 : 양식을 채우는 데이터 공급자에서 기본값을 제공 할 수 있다는 것을 알고 있지만 추악하게 보이고 확장 가능하지 않고 나머지 필드와 일치하지 않으므로이를 피하려고합니다.
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>
. 값이있는 배열을 반환하는 \Magento\Framework\Option\ArrayInterface
메소드 를 구현 하고 구현하는 비슷한 클래스가 필요 toOptionArray
합니다. 배열의 각 요소는 다음과 같아야합니다.['value' => ..., 'label' => ...]