Saya memiliki entitas khusus di Magento 2 saya instal.
Dan salah satu bidang dalam entitas ini adalah tipe multiselect dan berisi daftar semua negara.
Saya menggunakan komponen ui untuk formulir admin saya.
Karena ada sekitar 200 catatan dalam pilih, saya tidak ingin memiliki bidang multiseleksi karena tidak mudah digunakan.
Jadi saya membuat salah satu multiselek mewah yang mirip dengan bidang kategori di bagian admin tambah / edit produk.
Itu terlihat lebih bagus, tetapi saya tidak dapat menetapkan nilai default untuk itu.
Ini konfigurasi saya (perhatikan defaultitem konfigurasi):
<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>
Dan saya mengharapkan 2 nilai yang saya tempatkan di bidang default untuk dipilih:
Jika saya mengubah elemen menjadi multiselect sederhana itu berfungsi dengan baik.
<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>
Saya terikat dengan format ini untuk defaultpengaturan
<item name="default" xsi:type="string">RO,MD</item>
dan yang ini juga:
<item name="default" xsi:type="array">
<item name="MD" xsi:type="string">MD</item>
<item name="RO" xsi:type="string">RO</item>
</item>
Juga mencoba dengan tag selectdan multiselectdi dalam formElementstag.
Semua percobaan saya berakhir dengan kegagalan.
Menggunakan defaultpengaturan dalam jenis bidang apa pun lainnya, seperti yang diperintahkan di sini (teks, pilih, tanggal, ...) berfungsi dengan baik.
Ada saran untuk memilih yang mewah? Sesuatu yang saya lewatkan?
Catatan: Saya tahu saya bisa memberikan nilai default di penyedia data yang mengisi formulir, tapi saya mencoba untuk menghindari ini karena terlihat jelek dan tidak bisa diperluas dan tidak konsisten dengan bidang lainnya.
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>. Anda memerlukan kelas serupa yang mengimplementasikan \Magento\Framework\Option\ArrayInterfacedan memiliki metode yang disebut toOptionArrayyang mengembalikan array dengan nilai Anda. setiap elemen dari array harus terlihat seperti ini['value' => ..., 'label' => ...]



