मैं अपने Magento 2 स्थापित में एक कस्टम इकाई है।
और इस इकाई में से एक क्षेत्र बहु प्रकार का है और इसमें सभी देशों की सूची है।
मैं अपने व्यवस्थापक फॉर्म के लिए यूआई-घटकों का उपयोग कर रहा हूं।
चूंकि चयन में लगभग 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' => ...]