Comment créer une boîte de sélection de composant d'interface utilisateur de formulaire avec une source pour remplir la boîte de sélection

7

J'essaie de savoir comment créer une boîte de sélection sous la forme d'interface utilisateur du composant magento et la pointer vers certains où je peux remplir la liste de sélection.

Quelque chose comme ça, je pensais que ça marcherait mais ça ne marche pas

<field name="formats">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="dataType" xsi:type="string">text</item>
                <item name="disabled" xsi:type="boolean">false</item>
                <item name="label" xsi:type="string" translate="true">formats</item>
                <item name="formElement" xsi:type="string">select</item>
                <item name="enabled" xsi:type="boolean">false</item>
                <item name="source" xsi:type="string">Magento\Catalog\Model\Product\AttributeSet\Options</item>
                <item name="dataScope" xsi:type="string">formats</item>
            </item>
        </argument>
    </field>

Merci

stewrat
la source

Réponses:

19

Vous pouvez ajouter comme ça

<field name="formats">
    <argument name="data" xsi:type="array">
        <item name="options" xsi:type="object">Magento\Catalog\Model\Product\AttributeSet\Options</item>
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">text</item>
            <item name="label" xsi:type="string" translate="true">Formats</item>
            <item name="formElement" xsi:type="string">select</item>
            <item name="source" xsi:type="string">modulename</item>
            <item name="dataScope" xsi:type="string">formats</item>
            <item name="default" xsi:type="string">0</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>
Priyank
la source
Génie! Puis-je vous demander d'où vous tenez ces informations pour référence future?
stewrat
Vous êtes au bon endroit frère. Continuez à chercher :)
Priyank
@Priyank où est le modulenamede <item name="source" />défini? J'ai essayé le mien depuis module.xml, routes.xml mais cela ne fonctionne pas. Je reçois ce message d'erreur: prntscr.com/d9c73e
Vasilii Burlacu
@Vasilii si votre nom de module est le nom du module que vous avez créé. Par exemple, si dans le module Magento_Catalog, le catalogue est le nom du module.
Priyank
@Priyank cela ne fonctionne pas comme vous l'avez décrit. Je me demande si la source fait référence à un modèle de module ou à un autre fichier .php contenant des options de sélection. PS J'essaye ceci avec le multiselecttype pour formElement.
Vasilii Burlacu
1

Il s'agit d'une approche plus courante au moins depuis Magento 2.3:

<field name="image_overlay_art" sortOrder="40" formElement="select">
    <settings>
        <dataType>int</dataType>
        <label translate="true">Show Art on Image Overlay</label>
    </settings>
    <formElements>
        <select>
            <settings>
                <options class="\Magento\Config\Model\Config\Source\Yesno"/>
            </settings>
        </select>
    </formElements>
</field>
bassplayer7
la source