Como criar uma caixa de seleção de componente da interface do usuário do formulário com uma fonte para preencher a caixa de seleção

7

Eu estou tentando descobrir como posso criar uma caixa de seleção no formulário da interface do usuário do magento e apontá-la para algumas onde eu possa preencher a lista de seleção.

Algo assim eu pensei que iria funcionar, mas não funciona

<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>

obrigado

stewrat
fonte

Respostas:

19

Você pode adicionar assim

<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
fonte
Gênio! Posso perguntar de onde você obteve essas informações para referência futura?
stewrat
Você está no lugar certo, mano. Apenas continue pesquisando :)
Priyank 27/10/16
@Priyank onde está a modulenamepartir <item name="source" />definida? Eu tentei o meu de module.xml, routes.xml, mas isso não funciona. Recebo esta mensagem de erro: prntscr.com/d9c73e
Vasilii Burlacu
@ Vasilii se seu nome do módulo for o nome do seu módulo que você criou. Por exemplo, se no módulo Magento_Catalog, o catálogo é o nome do módulo.
Priyank
@Priyank, não funciona da maneira que você descreveu. Gostaria de saber se a fonte faz uma referência a um modelo de módulo ou outro arquivo .php que contém opções selecionadas. PS Eu tento isso com o multiselecttipo for formElement.
Vasilii Burlacu
1

Esta é uma abordagem que é mais comum, pelo menos a partir do 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
fonte