ฉันมีเอนทิตีที่กำหนดเองในการติดตั้ง magento 2 ของฉัน
และหนึ่งในฟิลด์ในเอนทิตีนี้เป็นประเภทเลือกหลายรายการและมีรายชื่อของทุกประเทศ
ฉันใช้ส่วนประกอบ 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
ตั้งค่าในฟิลด์ประเภทอื่น ๆ ตามที่แนะนำในที่นี้ (ข้อความเลือกวันที่ ... ) ทำงานได้ดี
ข้อเสนอแนะใด ๆ สำหรับแฟนซีเลือก? บางสิ่งที่ฉันคิดถึง
หมายเหตุ: ฉันรู้ว่าฉันสามารถให้ค่าเริ่มต้นในผู้ให้บริการข้อมูลที่เติมแบบฟอร์ม แต่ฉันพยายามหลีกเลี่ยงสิ่งนี้เนื่องจากมันดูน่าเกลียดและมันไม่สามารถขยายได้และไม่สอดคล้องกับส่วนที่เหลือของเขตข้อมูล
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>
จะดูในคำถามของฉันที่นี้ คุณต้องการคลาสที่คล้ายกันซึ่งใช้\Magento\Framework\Option\ArrayInterface
และมีเมธอดtoOptionArray
ที่ส่งคืนอาร์เรย์ด้วยค่าของคุณ แต่ละองค์ประกอบจากอาเรย์ต้องมีลักษณะเช่นนี้['value' => ..., 'label' => ...]