Magento 2 kurulumumda özel bir varlık var.
Ve bu varlıktaki alanlardan biri çoklu seçim türündedir ve tüm ülkelerin listesini içerir.
Yönetici formum için ui bileşenlerini kullanıyorum.
Seçimde yaklaşık 200 kayıt olduğundan, çoklu seçim alanına sahip olmak istemiyorum çünkü kullanımı o kadar kolay değil.
Bu yüzden, ürün yöneticisi ekle / düzenle bölümündeki kategoriler alanına benzer süslü çoklu seçimlerden birini oluşturdum.
Daha güzel görünüyor, ancak buna varsayılan bir değer ayarlayamıyorum.
İşte benim yapılandırmam ( default
yapılandırma öğesine dikkat edin ):
<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>
Ve varsayılan alana yerleştirdiğim 2 değerin seçilmesini bekliyorum:
Elemanı basit bir çoklu seçime dönüştürürsem iyi çalışır.
<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
Ayar için bu formatla bağlandım
<item name="default" xsi:type="string">RO,MD</item>
ve bu da:
<item name="default" xsi:type="array">
<item name="MD" xsi:type="string">MD</item>
<item name="RO" xsi:type="string">RO</item>
</item>
Ayrıca etiketiyle denenmiş select
ve multiselect
iç formElements
etiketi.
Bütün denemelerim başarısızlıkla sonuçlandı.
Kullanımı default
gibi alanlardan herhangi başka tür ayarını burada talimat (metin, seçmek tarih, ...) güzel çalışıyor.
Süslü seçimler için herhangi bir öneriniz var mı? Kaçırdığım bir şey mi?
Not: Ben formu dolduran veri sağlayıcısında varsayılan bir değer sağlayabileceğini biliyorum, ama çirkin görünüyor ve bu genişletilebilir ve alanların geri kalanı ile tutarlı değil bu önlemek için çalışıyorum.
<options class="Magento\Config\Model\Config\Source\Locale\Country"/>
. Değerlerinizi içeren bir dizi döndüren \Magento\Framework\Option\ArrayInterface
ve uygulayan benzer bir sınıfa ihtiyacınız var toOptionArray
. dizideki her öğe şöyle görünmelidir['value' => ..., 'label' => ...]